백준 78

[백준]2636번 치즈 - Java

문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 풀이 이 문제도 DFS로 풀었음! 다 풀고 나서 다른 풀이도 봤는데 BFS 풀이가 더 많이 보였던 것 같음 ㅎㅎ 암튼 그건 그렇고 외부 공기에 접촉한 치즈와 그렇지 않은 치즈를 판단하는게 포인트! 판의 가장자리는 치즈가 놓여있지 않으므로 거기서부터 DFS를 돌리면 외부공기를 판별할 수 있다! 그렇게 해서 1시간마다 외부 공기를 판별하고, 치즈 녹이고, 방문 체크 배열을 초기화하고 이 과정을 반복했음!..

[백준]2667번 단지번호붙이기 - Java

문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 요즘 DFS 문제를 많이 풀려고 함! 이 문제도 최근에 풀던 문제랑 비슷하다고 볼 수 있겠음 내 생각에 포인트는 DFS로 단지가 몇개인지 판단한 후 단지에 번호를 어떻게 붙이고 어떻게 해당 단지에 속하는 아파트의 개수를 세느냐! 인 것 같음 나는 해당 단지에 속하는 아파트의 개수를 세는 함수를 따로 만들었고 그 함수 안에서 새로 배열을 만들고 그 배열의 인덱스를 증가시켜 정렬한 후 반환해..

[백준]1388번 바닥 장식 - Java

문제 https://www.acmicpc.net/problem/1388 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나 www.acmicpc.net 풀이 dfs로 풀었음! 개인적으로 이 문제의 포인트는 한 방향(행 방향이든, 열 방향이든)으로만 탐색하면 되기 때문에 static으로 방향 벡터를 선언해줄 필요가 없음! 재귀를 하러 들어가기 전에 현재의 칸이랑 재귀를 들어갈 칸이랑 미리 비교를 해서 들어갈지 말지 판단을 할 것! 이렇게 두 가지임!!! 어렵지 않게 풀었음! 더 자세한건 주석으로 ㄱㄱ 코드 // 1388번 바닥 장식 // https:..

[백준]2573번 빙산 - Java

문제 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 풀이 dfs로 풀었음 막 어렵진 않고 차근차근 하면 잘 풀 수 있을 것 같은 그런 느낌적인 느낌 근데 나는 좀 더럽게 푼 것 같다,,, ㅎㅎ 더 쉽고 짧게 풀 수 있는 방법이 있을 것 같음! 개인적인 이 문제의 포인트는 빙산의 인접한 부분에 0이 있다고 그걸 계산하면서 진행하면 현재 칸이 0이 될 경우 다음 칸은 현재 칸의 0이 영향을 미쳐서 인접한 0의 개수가 늘어나기 때문에 인접한 ..

[백준]13458번 시험 감독 - Java

문제 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 풀이 걍 쉬운 문제라서 풀었는데 자꾸 틀렸다. 그래서 다시 문제를 보니 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) 주어지는 값들의 ..

[백준]8320번 직사각형을 만드는 방법 - Java

문제 https://www.acmicpc.net/problem/8320 8320번: 직사각형을 만드는 방법 상근이는 변의 길이가 1인 정사각형 n개를 가지고 있다. 이 정사각형을 이용해서 만들 수 있는 직사각형의 개수는 총 몇 개일까? 두 직사각형 A와 B가 있을 때, A를 이동, 회전시켜서 B를 만들 수 www.acmicpc.net 풀이 머리로만 풀려고 하다가 좀 헤맨 것 같다 ㅠㅠ 손으로 몇번 끄적이면서 그림 그려보면 쉽게 답을 구할 수 있을 듯???? 코드 // 8320번 직사각형을 만드는 방법 // https://www.acmicpc.net/problem/8320 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException..

[백준]17413번 단어 뒤집기 2 - Java

문제 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 어려운 문제는 아닌 듯하다 코드의 아랫부분에 전체 주석처리 되어 있는 코드가 있는데 문제 똑바로 안읽고 그렇게 풀었다가 시간만 날렸다 ㅠㅠㅠ 매번 문제 똑바로 읽어야지 하면서 매번 안그러는 것 같다,,,, 암튼 내 생각에 이 문제의 포인트는 flag를 하나 둬서 그걸로 현재 탐색하는 위치가 태그 안쪽인지 바깥쪽인지를 정해주는 부분이라고 생각한다! 그 부분..

[백준]2798번 블랙잭 - Java

문제 https://www.acmicpc.net/problem/1592 1592번: 영식이와 친구들 예제 1의 경우 일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다 www.acmicpc.net 풀이 얘도 쉬운 문제임! 그냥 완전 탐색으로 첨부터 싹 돌려주면 됨! 그나마 주의할 점은 3중 for문 안에서 인덱싱에 주의해야 된다는 점?? 코드 // 2798번 블랙잭 // https://www.acmicpc.net/problem/2798 package BAEKJOON; import java.io.BufferedReader; import java.io.IOExcepti..

[백준]1592번 영식이와 친구들 - Java

문제 https://www.acmicpc.net/problem/1592 1592번: 영식이와 친구들 예제 1의 경우 일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다 www.acmicpc.net 풀이 쉬운 문제임! 공을 다음 사람에게 전달할 때 인덱스 처리를 해주는 거만 쉽게 하면 정말 쉬운 문제인 것 같다! 다만 M이 1인 경우에는 게임이 시작하자마자 끝날 수 있으니까 그것만 주의해서 풀면 될듯?? 자세한 설명은 주석을 참고하면 됨 코드 // 1592번 영식이와 친구들 // https://www.acmicpc.net/problem/1592 package BAEK..

[백준]2567번 색종이-2 - Java

문제 https://www.acmicpc.net/problem/2567 2567번: 색종이 - 2 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net 풀이 몇번 풀어봤던 유형의 색종이 문제라 처음 읽었을 때는 한 5분이면 풀 수 있을 줄 알았다. 이전의 색종이 문제들은 내 블로그에도 두세문제 있으니까 찾아보면 될 듯???? 근데 얘는 걔네들보다는 쪼오오오오끔 더 생각을 해야된다. 넓이를 구하는게 아니라 둘레를 구하는 것이기 때문. 우선 색종이를 붙인 칸이면 1로 싹 바꿔주고, 바꾼 후에 배열 한 칸마다 탐색을 한다. 탐색을 하면서 1인 칸은 ..

[백준]2941번 크로아티아 알파벳 - Java

문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 풀이 그냥 케이스 나누고 인덱싱에 주의하면서 풀었음! 근데 같이 스터디하는 친구가 다른 방법으로 잘 풀어서 그것도 코드에 추가해 놓아야겠음 ㅎㅎㅎ 첫번째가 내가 그냥 푼 코드고 두번째가 새로 알게된 방식! 문자열을 다룰 때는 이처럼 내장 함수를 쓰면 많이 편하니까 평소에 자주 쓰는 버릇을 들여놔야겠다 이 코드에서는 String.contains()랑 Str..

[백준]2564번 경비원 - Java

문제 https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net 풀이 단순하게 케이스를 나눠서 계산을 해주면 되는 문제임! 동서남북 나눠서 계산을 했음 자세한건 주석으로 코드 // 2564번 경비원 // https://www.acmicpc.net/problem/2564 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade..

[백준]1417번 국회의원 선거 - Java

문제 https://www.acmicpc.net/problem/1417 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 풀이 쉬운 문제임 for문을 돌면서 후보자들 중 가장 많은 표를 가지고 있는 후보자를 찾고 그 표가 다솜이의 표보다 많다면 그 후보자의 표를 -1 해주고 다솜이의 표를 +1 해준다. while(true){ ] 안에서 다솜이의 표가 다른 후보자들의 표보다 많아질 때까지 정답에 해당하는 로직을 반복하면 된다. 진짜 이게 끝임! 코드 // 1417번 국회의원 선거 // https://w..

[백준]2468번 안전 영역 - Java

문제 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 풀이 많이 풀어본 듯한 유형의 문제??? visited[][] 배열을 만들어서 방문한 곳을 체킹하면서 풀 수도 있겠지만 나는 탐색하고 있는 tempMap의 값을 직접 스지않는 값(코드 에서는 -1)으로 바꿔주고 그거를 방문했다는 표시로 봤음! 강수량을 증가시킬 때마다 사방탐색을 하면서 DFS를 돌려주고 그렇게 해서 나온 값들 중 가장 큰 값을 정답으로 출력해줬다. solution() 함수 안에서는 ..

[백준]2840번 행운의 바퀴 - Java

문제 https://www.acmicpc.net/problem/2840 2840번: 행운의 바퀴 첫째 줄에 마지막 회전에서 화살표가 가리키는 문자부터 시계방향으로 바퀴에 적어놓은 알파벳을 출력한다. 이때, 어떤 글자인지 결정하지 못하는 칸은 '?'를 출력한다. 만약, 상덕이가 적어놓 www.acmicpc.net 풀이 또 문제를 잘 읽지 않아서 시간을 버렸다,,, 문제 초반에 분명하게 '바퀴에 같은 글자는 두 번 이상 등장하지 않는다.' 라고 써있는데도 안 읽고 풀었다가 헤맸다 ㅠㅠ ArrayList를 큐처럼 사용하여 풀었다 자세한건 주석으로! 코드 // 2840번 행운의 바퀴 // https://www.acmicpc.net/problem/2840 package BAEKJOON; import java.io..

[백준]1244번 스위치 켜고 끄기 - Java

문제 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 풀이 문제에 맞게 잘 따라가면 됨 남학생 부분은 % 연산으로 쉽게 해결 가능 여학생의 경우 for문 안에서 가운데 부터 왼쪽 + 오른쪽으로 하나씩 인덱스를 이동하면서 비교 후 연산을 해줌 코드 // 1244번 스위치 켜고 끄기 // https://www.acmicpc.net/problem/1244 package BAEKJOON; import java.io.BufferedReader; i..

[백준]3085번 사탕 게임 - Java

문제 https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 풀이 완전완전탐색으로 풀었음 2차원 배열을 하나하나씩 돌면서 4방으로 탐색해줌 인접한 사탕이 같은 종류면 다음 방향으로 넘어가고, 다른 종류면 스왑한 다음 solution() 함수를 실행하여 연속한 사탕의 최대 개수 max를 최신화함 내 생각에 여기서 포인트는 인접한 다른 종류의 사탕끼리 바꿨으면 solution() 함수를 실행해서 max를 최신화한 후, 바꿨던 사탕을 다시 원래대로 바꿔주어야 하고, solution() 함수 안에서는 큰 for문 안에서 행검사와 열검사를 같이 해주면 시간복잡도를 조금이나마 줄..

[백준]2578번 빙고 - Java

문제 https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 풀이 for문 안에서 인덱싱에 주의하면서 각 행마다, 각 열마다, 대각선 2개까지 빙고를 체크해주면 됨 주의할 점은 사회자가 부르는 수로 인해서 한번에 빙고가 2개가 생기는 경우가 있을 수도 있기 때문에 마지막에 bingoCount == 3 이 아닌 bingoCount >= 3 으로 해줘야함! 코드 // 2578번 빙고 // https://www.acmicpc.net/problem/2578 package ..

[백준]10431번 줄세우기 - Java

문제 https://www.acmicpc.net/problem/10431 10431번: 줄세우기 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1 www.acmicpc.net 풀이 문제 잘 읽고 구현하면 됨! 아마 ArrayList나 List 등을 이용하여 많이들 구현할 것 같은데 그렇게 할 경우 애들을 줄 세울 때 어디에 세워야하는지가 조금 헷갈릴 수도 있으니 주의할 것! 자세한건 주석에 있음 코드 // 10431번 줄세우기 // https://www.acmicpc.net/problem/10431 package BAEKJOON; import java.io.Buffer..

[백준]1091번 카드 섞기 - Java

문제 https://www.acmicpc.net/problem/1091 1091번: 카드 섞기 지민이는 카지노의 딜러이고, 지금 3명의 플레이어(0, 1, 2)가 있다. 이 게임은 N개의 카드를 이용한다. (0 ~ N-1번) 일단 지민이는 카드를 몇 번 섞은 다음에, 그것을 플레이어들에게 나누어 준다. 0 www.acmicpc.net 풀이 문제를 처음 읽었을 때는 뭔소린지 모르겠었는데 몇번 더 읽다보니까 이해를 했음 문제에서 주어진 순서대로 카드를 섞고 섞을 때마다 정답과 비교해서 정답과 같은 순서로 카드가 섞였다면 그때의 count를 출력하면 됨 내 생각에 포인트는 언제 -1을 출력해야 되냐 인 듯??? 계속해서 섞다가 한번도 섞지 않았을 때(초기 상태)와 같은 순서로 카드가 나왔을 경우를 생각해보면,..