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
'알고리즘 > 백준' 카테고리의 다른 글
[백준/swift] 11328번: Strfry (0) | 2022.12.13 |
---|---|
[백준/swift] 13300번: 방 배정 (0) | 2022.12.13 |
[백준/c++] 14500번: 테트로미노 (0) | 2022.11.24 |
[백준/c++] 3190번: 뱀 (0) | 2022.11.23 |
[백준/c++] 5427번: 불 (0) | 2022.11.17 |