안녕하세요!!!오늘은 제가 풀었던 백준 문제 중 머리 푸는 용도로 풀었던 문제를
소개시켜드리고 풀이를 보여드리겠습니다
사진을 보시면 가운데 1을 둘러싸면서 번호가 매겨집니다
그래서 만약 입력으로 숫자가 들어오면 그 숫자가 매겨진 방에서
1번까지 가려면 몇 개의 방을 거쳐야 하는지 나오는 문제입니다
(자기가 있는 방과 1번 방도 포함합니다!!!)
사진을 보고 딱 드는 생각은 계차수열입니다
계차수열은 수열간의 차이가 등차수열인 수열입니다
이 사진을 보시면 제가 그림판으로 선을 그렸습니다
빨간 선 중에서 가장 큰 값을 나열해보면(1을 첫째 항으로 합니다)
1, 7, 19, 37, 61, ...입니다
앞과 뒤에 있는 숫자들을 빼보면
6, 12, 18, 24, ...이렇게 6씩 늘어나는 등차수열이 나옵니다
그래서 저는 등차수열의 합 공식을 이용해서 풀이를 했습니다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int num = scan.nextInt(); //현재 방의 숫자
int room; //거처야하는 방의 숫자
for(room = 1 ; true ; room++) {
if(num == 1) break; //num이 1이면 한 개의 방만을 거침
else if((1+((room*(6*2+(room-1)*6))/2)) >= num) {
room++; //자기 자신을 포함해야하기 때문에 1을 더해준다
break;
}
}
System.out.println(room);
}
}
제가 풀었던 코드입니다
간단하게 손이나 머리를 풀어주는 정도의 문제로 좋을 것 같다고 생각이 드네요
'Algorithm' 카테고리의 다른 글
[Java] 백준 1032번 문제 명령 프롬프트 (0) | 2021.05.14 |
---|---|
[Java]백준 1193번 문제 '분수 찾기' (0) | 2021.05.14 |
[Java] 백준 2869번 문제 '달팽이는 올라가고 싶다' (0) | 2021.05.14 |
[Java] 백준 1152 단어의 갯수 문제 풀이 (0) | 2021.05.14 |
프로그래머스 코딩테스트 연습 - K번째 수 (0) | 2021.05.04 |