오늘의 알고리즘 boj-1475

코변·2022년 11월 17일
0

알고리즘 공부

목록 보기
40/65

문제

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

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

풀이

각 숫자별 갯수를 세어준다. 이 때 6과 9는 서로 반대로도 활용이 가능하기 때문에 같은 값으로 치고 나누기 2를 해주면 된다고 생각했으나 이 값이 짝수일 때 홀수일 때 각각 값이 달라진다.

처음에는 if문으로 둘을 구분해서 짝수라면 //2 홀수라면 //2한 값에 +1을 해줬으나 아래 코드와 같이 값에 1을 먼저 더하고 나누기 2를 하면 홀수라면 하나 더 증가한 값 그러니까 나누기 2 더하기 1을 한 값을 얻을 수 있다.

numbers = [0] * 10

for number in input():
    if number == "9":
        number = "6"
    numbers[int(number)] += 1

numbers[6] = (numbers[6] +1) // 2

print(max(numbers))
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글