-
[백준/Java] 2292번 - 벌집Problem Solving 2022. 4. 3. 19:48
// 6 > 12 > 18 > 24 > ... // 가운데에서 n 칸 밖으로 갈 때마다 해당 라인의 cell 수는 6n 씩 증가 // 1 : 1 번 이동 // 2 ~ 7 : 2 번 이동 // 8 ~ 19 : 3 번 이동 // 20 ~ 37 : 4 번 이동 import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 가고자 하는 cell 번호 int i = 0; int num = 1; while (true) { num = num + 6*i; // i의 증가에 따라 1, 7, 19, 37, ... if (N == 1) { System.out.println(1); break; } else if ((num-6*i+1) <= N && N <= num) { // 2~7, 8~19, 20~37, ... System.out.println(i+1); // 움직이는 횟수 break; } i++; } } }
서울에 잠시 다녀오는 길, 아버지께서 임종준비실로 옮기셨다는 소식을 듣고 심란한 상태에서 풀었던 문제다.
C로 풀었을 때.
#include <stdio.h> int main(){ int room_num, last_room=1, cycle_num=0; scanf("%d", &room_num); while(1){ last_room = last_room+cycle_num*6; // last_room : 해당 원의 마지막 방 if(room_num <= last_room){ printf("%d\n", cycle_num+1); break; } cycle_num++; } return 0; }
자바로 풀었을 때 보다 더 간결해졌다. 다시 풀어서 그런가?
'Problem Solving' 카테고리의 다른 글
[백준/C] 1193번 - 분수 찾기 (0) 2022.05.12 [백준/C] 3052번 - 나머지 (0) 2022.04.25 [백준/Java] 4673번 - Self Number (0) 2022.04.03 [백준/Java] 4344번 - 평균 이상 비율 구하기 (0) 2022.03.27 [백준/Java] 8958번 - OX (0) 2022.03.27