코딩테스트 164

[백준]2638번 치즈 - Java

문제 https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 풀이 https://seokmimmmmmmmm.tistory.com/78 [백준]2636번 치즈 - Java 문제 https://www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부 seokmimmmmmmmm.tist..

[백준]9372번 상근이의 여행 - Java

문제 https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 풀이 좀 어이가 없는 문제인 것 같다 비행기를 몇번 타는지를 출력하는게 아니라 비행기의 종류의 최소 개수를 출력해야됨! 근데 그래프는 연결 그래프이고 최소 개수를 구하는 거니까 그냥 (정점 - 1)개가 정답이다 코드 // 9372번 상근이의 여행 // https://www.acmicpc.net/problem/9372 package BAEKJOON; imp..

[백준]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..

[SWExpertAcademy]7272번 안경이 없어! - Java

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWl0ZQ8qn7UDFAXz SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문자열의 길이가 다르면 DIFF, 같은 경우에만 비교해서 같으면 SAME 출력 근데 첫번째 코드로는 왜인지 모르겠으나 통과가 되지 않았다. 그래서 두번째 코드로 했더니 통과가 됐다. 아직도 왜그런지 모르겠다 ㅠ 혹시 보다가 알게되면 알려주세용 코드 // 7272 - 안경이 없어! package d3; import java.io.BufferedReader; import java.io.IOE..

[SWExpertAcademy]1860번 진기의 최고급 붕어빵 - Java

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc# SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 for문 안에서 시간 i가 1초씩 증가한다고 생각하고 풀었음 쉬운 문제라서 구현을 하고 돌려보았을때 주어진 테스트케이스들은 정답이었지만 제출하니까 1000개 테케 중 993개만 맞았다고 해서 다시 코드를 뜯어봤음 ㅠㅠ 0초에도 손님이 올 수도 있다는 것을 생각지 못하고 시간을 1초부터 시작을 해줘서 그 부분을 고쳐줬음 그런데도 통과가 되지 않아서 알고보니까 i % current == 0..

[백준]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..