본문 바로가기
코딩테스트/문제풀이-1

[필수] 1302 베스트셀러

by apple망고 2024. 1. 20.
import Foundation

var bookSaleInfo = String: Int

for _ in 0..<Int(readLine()!)! {
let bookName = readLine()!.trimmingCharacters(in: .whitespacesAndNewlines)
bookSaleInfo[bookName, default: 0] += 1
}

let booksNames = bookSaleInfo.keys.sorted()

var cnt = -1
var ans = ""

for bookName in booksNames {
if bookSaleInfo[bookName]! > cnt {
cnt = bookSaleInfo[bookName]!
ans = bookName
}
}

print(ans)

 

코드 설명

  • bookSaleInfo라는 딕셔너리를 만든다.
  • 입력에서 빈 공백을 제거해주는 trimmingCharactres(in: .whitespaceAndNewlines)를 사용한 책 이름을 bookName에 저장해준다.
  • bookSaleInfo에 해당 이름을 해당하는 value 값을 1 증가 시킨다. -> [bookName, default:0] default는 아무 값도 없을 때 기본 값이다.
  • 가장 많이 팔린 책이 여러 권일 경우 이름 순 제일 앞의 값을 제출하라고 했기에 sorted()사용한다.
  • bookNames를 for문 순회하면서 value값을 비교하면서 제일 큰 값을 ans변수에 저장한다.

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

 

1302번: 베스트셀러

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

www.acmicpc.net

 

'코딩테스트 > 문제풀이-1' 카테고리의 다른 글

[선택] 10818 최소, 최대  (0) 2024.01.25
[선택] 10995 별찍기 - 20  (0) 2024.01.25
[선택] 2438 별 찍기 -1  (0) 2024.01.22
[선택] 10869 사칙연산  (0) 2024.01.22
[필수] 8892 팰린드롬  (0) 2024.01.22
[필수] 8958 OX퀴즈  (0) 2024.01.22
[필수] 2711 오타맨 고창영  (0) 2024.01.21
[필수] 2231 분해합  (0) 2024.01.20