728x90
반응형
단계별로 풀어보기 - [8단계.기본수학1] - 2839번 설탕배달 문제 문제링크 풀이 쉬워보였는데 은근히 까다로웠던 문제였다. (아무튼 난 그렇게 느꼈다,,) 열심히 코드를 짰는데 어디가 잘못됐는지 모르겠지만 틀렸다고 나와서 그냥 구글링 해서 참고했다. while문 안에서 n이 5로 나눠지면 바로 출력하고, 5로 나누어 떨어지지 않으면 3씩 빼고 봉지 수를 늘린다. 그렇게 계속 루프를 돌다가 n이 0이 되면 첫번째 if문으로 돌아가 bong 출력 n이 0보다 작아지면 -1을 출력하고 루프를 빠져나온다. CODE import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scann..
단계별로 풀어보기 - [8단계.기본수학1] - 2775번 부녀회장이 될테야 문제 문제링크 풀이 k와 n 입력값에 따라 그때그때 계산하는 것이 아니라, 층과 호에 따라 모든 아파트 거주민의 수를 이차원 배열로 만들어 놓은 다음, 테스트 케이스 값에 해당하는 것을 배열에서 꺼내서 출력해야 한다. 재귀함수로 해야 하는 줄 알았는데 그보다 이 방법이 더 간단했다. 먼저 k와 n값은 1 이상 14 이하라는 조건이 있으므로, 이차원 배열로 충분히 만들어놓을 수 있다. apart[k][n]은 k층 n호에 사는 거주민 수이다. 모든 층의 1호는 모두 1명이고, 0층 i호에는 i명이 산다고 했으므로, 이를 먼저 세팅해준다. 그리고 나서 1층부터 14층까지 2호부터 14호까지 하나씩 채우면 된다. k층 n호에 사는 거주민..
알고리즘 - [너비 우선 탐색] - 2667번 단지번호 붙이기 문제 문제링크 풀이 아파트 단지마다 0으로 구분되어 있기 때문에, 한 단지를 탐색하고 나서 다른 단지를 탐색할 때 어떻게 해야 할지 고민을 많이 했다. 이중for문을 되도록이면 돌리고 싶지 않았지만, 이 방법밖에 없었던 것 같다. 그래도 if문을 통해 해당 좌표가 1이고 방문을 하지 않았을 경우에만 bfs를 돌렸기 때문에 시간이 그리 많이 낭비되지는 않았다. 결론적으로는 아직 방문하지 않은 1인 곳에서부터 bfs를 시작하며, 하나의 단지 탐색이 모두 끝나면 아직 방문하지 않은 단지를 찾아 bfs를 도는 구조이다. 단지를 탐색하면서 그 단지 안에 몇 개의 집이 있는지 카운트하고 그걸 result라는 리스트 원소로 추가해주었다. bfs함수에서는 ..
알고리즘 - [너비우선탐색] - 2178번 미로 탐색 문제 문제링크 풀이 현재 위치의 좌표를 나타낼 Location 클래스를 만들어서 column, row, distance를 한번에 묶어서 다룰 수 있게 하였다. distance는 그 좌표까지 움직인 거리를 나타내며, 한칸씩 이동할 때마다 +1 해줘야 한다. BFS를 이용해야 하기 때문에, 현재 위치에서 상하좌우의 좌표를 살펴보면서, 미로 안에 있으면서 && 1이고 && 아직 방문하지 않은 좌표라면 그 좌표를 큐에 넣어준다. 이때 그 좌표의 거리는 이동하기 전 좌표의 dist에 +1한 값을 넣어줘야 한다. 그리고 새로운 좌표를 방문한 것으로 표시해준다. 상하좌우를 방문하는 것은 dx와 dy로 리스트를 만들어서 for문 안에서 돌아가면서 원래 좌표에 더하였..