본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 2292번

by Joahnee 2021. 8. 5.

요구능력 : 규칙을 찾아서 구현할수있느냐

코드설명 

우선 규칙을 찾아야된다.

1일 때는 1개

2~7일 때는 2개 (범위 : 6)

8~19일 때는 3개 (범위 : 12)

20~37일 때는 4개 (범위 : 18)

38~61 일 때는 5개 (범위 : 24)

.

.

 

보면, 1일 때를 제외하고 아래로 내려갈수록 범위가 6씩 늘어난다.

이제 이 규칙을 이용해서 문제를 풀어야한다.

내가 생각하면서 풀어간 순서대로 적어보겠다.(아래코드 참조하면서 봐주세요.)

 

1. 1은 따로 처리를 해줘야한다.

왜? 1은 구해놓은 규칙과 연관성이 없기 때문에.. 애초에 1을 제외하고 구한 규칙이다.

 

2. 규칙으로 식을 만들어보자.

우리는 sum에 1을 넣어야된다.

왜? 1을 제외한 규칙이기 때문에 1부터 시작해야된다.

 

for문안에서 sum에 6 * i를 더해줘야된다.

왜? 아까 구한 규칙에서 범위가 6의 배수로 증가하기 때문이다.

 

3. count를 넣어줘야 겠다.

범위가 늘어날 때 마다 count로 +1 씩 더해준다면 결국 count가 방의 개수가 된다.

 

4. 입력받은 n이 sum 보다 작거나 같아지는 순간에 count를 프린트하자

sum은 아까 구한 규칙대로 7, 19, 37, 61의 수가 들어갈 것이다.

7보다 작거나 같으면 2개

19보다 작거나 같으면 3개

.

.

 

후기 : 많이 생각해서 풀었다.. 분발하자

let n = Int(readLine()!)!
var sum = 1
var count = 1
for i in 1...n {
    if n == 1 {
        print("\(count)")
        break
    }
    if n <= sum {
        print("\(count)")
        break
    }
    sum += 6 * i
    count += 1
}

댓글