백준 1475번 문제

2019. 9. 27. 00:52Algorithm (알고리즘)

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

 

안녕하세요. 이번에는 백준 1475번 문제를 들고 왔습니다. 일단 문제의 핵심을 생각해봅시다.

 

이문제의 핵심은 각 자릿수를 체크를 해야 하고, 자릿수마다 숫자도 체크를 해 세트의 개수를 구하는 거죠.

그럼 어떻게 알고리즘을 짜야할까요?

 

일단 변수 설정부터 들어가 봅시다.

저 같은 경우에는

주어진 수 : num

각 자릿수 : data

세트의 개수 : count

상태 : reSet

세트 안의 숫자수 : check[10] (0,1,2,3,4,5,6,7,8,9)

각 자릿수의 숫자 : digit

이렇게 각 변수마다 의미를 부여해 만들었습니다.

그럼 일단 자릿수부터 구하는 코드를 구현해봅시다..

 

여기서 보시면  data의 초기값은 10으로 되어있죠.

num을 data로 나누었을 때 몫이 10 이상이 되면 data자릿수가 아니기 때문에 data의 10을 곱해주면서 검사를 했습니다.

그리고  주어진 수가 십의 자리보다 작은 경우는 일의 자리밖에 없으므로 data에 1을 대입합니다

마지막으로 num을 data로 나누었을 때 9 이하가 되면 break를 걸어 while문에서 나가도록 만들었습니다.

긴 사진이지만 이해하면 간단한 코드입니다. 일단 num을 data로 나눈 몫을 digit에 저장합니다.

그리고 digit를 check인덱스로 사용해 해당되는 값이 0 이상이면 1을 빼주고 0이면 reSet을 1로 바꿔 check의 인덱스 값들을 전부 1을 더해집니다.

 

숫자 6과 9는 연동 할 수 있으니 digit가 6이나 9일때도 한 번 체크해주시면 될 것 같습니다.

이렇게 1475번 문제도 해결할 수 있습니다.

다음에도 수학관련 알고리즘 문제의 풀이과정을 들고오겠습니다.

긴 글 봐주셔서 감사합니다

 

 

'Algorithm (알고리즘)' 카테고리의 다른 글

Design Pattern) Singleton (싱글턴)  (0) 2020.11.04
백준 1085번 문제  (0) 2019.09.27
백준 2163번 문제  (0) 2019.09.27