반응형
중앙 1번부터 시작해서 시계방향으로 점점 숫자를 쌓아 들려가고 있다.
주어진 번호가 중앙 1번부터 최소 몇 개의 방을 지나가는지 출력하는 문제이다.
접근 방법)
우선 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 구하기 위해 어렵게 생각할 필요 없다.
단순하게 '몇 겹째에 해당 숫자가 존재하는지 출력하시오'를 어렵게 말로 풀이해 놓은것이다.
점의 개수 증가 규칙
첫 번째 중앙에는 점이 1개, 두 번째 겹에는 7개, 세 번째 겹에는 19개가 배치되는 방식으로 점의 개수가 점점 늘어난다.
이 과정에서 겹마다 점의 개수는 특정 규칙을 따른다. 각 겹에서 점의 개수는 6 × 1, 6 × 2, 6 × 3, ... 형태로 증가한다.
위 규칙을 기반으로 다양한 코드를 작성할 수 있다.
나같은 경우는 N 값에서 각 겹의 점 개수를 차례로 삭감하며 겹의 개수를 계산하는 코드이다. N > 0인 동안 반복하며, 현재 겹의 점 개수를 빼고, 겹의 개수를 1씩 증가시킨다.
이해가 안 된다면 아래 코드를 보면서 확인해 보자.
정답 코드 1)
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 입력값 N
int minus = 6; // 겹마다 증가하는 값(6, 12, 18, 24 ...가 될 예정)
int result = 1; // 최종 출력 값
if(N == 1){
System.out.print(1);
}else{
N = N-1; // 계산하기 쉽게 -1을 해줌.
while(N>0){ // N>0동안 반복 작업
N = N - minus; // 현재 겹의 점 개수를 N에서 삭감
result++; // 겹의 개수 증가
minus = minus + 6; // 다음 겹의 숫자 개수 갱신
}
System.out.print(result);
}
}
}
반응형
'Baekjoon 자바 코드 > 일반 수학' 카테고리의 다른 글
[백준] 1193번 분수 찾기 코드 (Java 자바) (0) | 2024.12.19 |
---|---|
[백준] 2903번 중앙 이동 알고리즘 풀이 코드 (Java 자바) (0) | 2024.12.17 |
[백준] 2720번 세탁소 사장 동혁 풀이 코드 (Java 자바) (0) | 2024.12.16 |
[백준] 11005번 진법 변환2 풀이 코드 (Java 자바) (0) | 2024.12.11 |
[백준] 2745번 진법 변환 풀이 코드 (Java 자바) (0) | 2024.12.05 |