2026.02.27
조건문을 설정하는 데에 있어서 세부사항을 고려하지 못 함
변수를 설정할 때에 있어서 좀 더 많은 생각을 하는 연습이 필요함.
1차 실행 오류
다음 줄로 넘어갈 때i % w == 0조건에서
w의 배수가 되기 전에 목표 상자에 접근하게 되는 경우가 발생class Solution { public int solution(int n, int w, int num) { int answer = 0; int lines = n / w; // 나오는 총 줄의 수 if (n % w > 0) { lines++; } for (int i = n; i >= 0; i--) { if (i % w == 0) { // 다음 줄로 넘어갈 때 answer++; } if (i == num) { // 찾으려는 상자에 접근 시 종료 answer++; break; } } return answer; } }
2차 실행 오류
탐색하고자 하는 상자가 첫번째 줄에 있을 때 line이 0으로 설정됨class Solution { public int solution(int n, int w, int num) { int answer = 0; int line = 0; int order = 1; // num이 밑에서부터 몇번째 줄에 있는지 확인 for (int i = 1; i <= n; i++) { if (i % w == 0) { line++; } if (i == num) { break; } } // 몇번째에 위치해있는지 찾기 // 홀수 라인일 때 if (line % 2 != 0) { order = num % w; if (order == 0) { order = w; } } // 짝수 라인일 때 else { order = line * w - num + 1; } while(true) { if (num > n) { break; } // 짝수 라인일 때 if (line % 2 == 0) { num += 2 * order - 1; line++; answer++; } // 홀수 라인일 때 else { num += (w - order) * 2 + 1; line++; answer++; } } return answer; } }
소요 시간: 1시간 17분 28초
내가 제출한 정답
class Solution { public int solution(int n, int w, int num) { int answer = 0; int line = 0; int order = 1; // num이 밑에서부터 몇번째 줄에 있는지 확인 for (int i = 1; i <= n; i++) { if (i % w == 0) { line++; } if (i == num) { break; } } if (line == 0) { line = 1; } // 몇번째에 위치해있는지 찾기 // 홀수 라인일 때 if (line % 2 != 0) { order = num % w; if (order == 0) { order = w; } } // 짝수 라인일 때 else { order = line * w - num + 1; } while(true) { if (num > n) { break; } // 짝수 라인일 때 if (line % 2 == 0) { num += 2 * order - 1; line++; answer++; } // 홀수 라인일 때 else { num += (w - order) * 2 + 1; line++; answer++; } } return answer; } }