Algorithm/백준

[백준 알고리즘] 1475번: 방 번호 (Python)

에릭 Kim 2023. 4. 26. 17:32
반응형

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

문제

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

 

출력

첫째 줄에 필요한 세트의 개수를 출력한다.

 

 

소스코드

 

풀이

★ 기본적인 논리는 0 ~ 9까지의 배열 길이 10짜리의 리스트를 만들고 숫자가 나올 때마다 해당 인덱스를 + 1씩 증가시켜 주는 것입니다. 

 

★ 문제의 조건 중 6은 9로, 9는 6으로 바꿔 사용할 수 있다고 하였습니다. 이 말은 6은 9로 동일하게, 9는 6과 동일하게 취급할 수 있다는 것입니다. 저는 코드에서 반복문이 돌면서 숫자 9를 만났을 때 인덱스 번호 6의 값을 1씩 증가시켜 줬습니다.

 

★ 6과 9를 제외한 나머지 수를 만났을 때는 해당 수를 인덱스로 가지는 값을 +1씩 해줍니다 ! 

 

★ 출력을 할 때는 인덱스 번호 6에 있는 값을 2로 나눠줘야 합니다. 그 이유는 저희가 풀이 과정에서 9 또한 6으로 취급했기 때문입니다. 

 

★ 출력문 전에 arr[6] = ((arr[6]+1) // 2) 코드를 볼 수 있는데, 6번 인덱스 값에 +1을 해주는 이유는 n이 '홀수'였을 때를 고려해줘야 하기 때문입니다. 

ex) n = 99999. +1 하기 전 코드 결과 =>  2. +1 했을 때의 결과 => 3 

 

반응형