본문 바로가기
Algorithm/BOJ

[Algorithm/BOJ] 1302 - 베스트셀러 Swift Python

by thoonk: 2021. 5. 9.

문제 풀이:

Python은 Counter 클래스를 사용하면 쉽게 풀 수 있는 문제이다.

하지만, Swift는 따로 지원해주지 않기 때문에 딕셔너리를 카운터로 사용해야 한다.

이 방법은 이 문제가 아니더라도 쓸 일이 있어서 알아두면 좋다.

마지막에 정렬은 팔린 횟수가 많은 순으로 정렬하고 같다면 사전순으로 정렬한다.

 

코드: 

Swift

let n = Int(readLine()!)!
var soldCounter = [String:Int]()
for _ in 0 ..< n {
    let book = readLine()!
    soldCounter[book, default: 0] += 1
}
print(soldCounter)
let result = soldCounter.sorted { $0.value == $1.value ? $0.key < $1.key : $0.value > $1.value }
print(result)
print(result.first!.key)

 

Python

import sys
from collections import Counter

input = sys.stdin.readline
n = int(input())
books = []
for _ in range(n):
    books.append(input())

books.sort()
soldCounter = Counter(books)
print(soldCounter.most_common(1)[0][0])

 

문제:

 

1302번: 베스트셀러

첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고

www.acmicpc.net

부족한 점 피드백해주시면 감사하겠습니다👍

댓글