알고리즘/백준

[백준/swift] 1475번: 방 번호

녕이 2022. 12. 13. 14:28
728x90

 

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

 

1475번: 방 번호

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

www.acmicpc.net

 

난이도가 높은 문제는 아닌 문제인데 생각보다 많이 헤맸다 하...

가장 개수가 많은 애를 기준으로 세트가 추가된다.

문제는 6, 9를 뒤집어서 9, 6으로 사용할 수 있다는 것이다.

 

1. 정수 -> 배열로 만들기

2. 배열 원소에 따라 카운팅

3. 6, 9를 제외하고 가장 많은 개수를 가진 값을 answer에 할당

4. 6이랑 9를 서로 변경할 수 있으므로 하나로 생각하면 편하다. 

    둘의 개수가 짝수라면,,, 반으로 나누면 된다.

    홀수라면 하나가 남게 된다. 

    이 사실을 유의하면서 생각해보자.

    4 / 2, 5 / 2 둘 다 2가 나온다. 

    그러므로 여기서 둘의 개수 + 1에서 / 2를 해주면 된다

    예제를 두고 생각해보면

    ex01) 6699 -> ( 4 + 1 ) / 2 = 2 짝수의 경우 (66), (99)

    ex02) 66699 -> ( 5 + 1 ) / 2 = 3 홀수의 경우 (66), (69), (9)

 

import Foundation

var N = Array(readLine()!)
var array = Array(repeating: 0, count: 10)
var answer = 0
for element in N { array[Int(String(element))!] += 1 }
for i in 0..<10 {
    guard i != 6, i != 9 else { continue }
    answer = Int(String(array[i]))! > answer ? Int(String(array[i]))! : answer
}
print(max(answer, Int((array[6] + array[9] + 1) / 2)))

 

 

Swift로 제출하면 체점 준비 시간이 너무 길다... 후

728x90