https://www.acmicpc.net/problem/25757
나의 답
import sys
dic = {'Y':2, 'F':3,'O':4}
num, mode = input().split()
mode = dic[mode]
total = []
for i in range (int(num)):
total.append(sys.stdin.readline())
total = set(total)
print(len(total)//(mode-1))
mode를 딕셔너리로 관리해서 한 게임당 플레이어 수를 설정했다.
반복되는 부분을 없앨려고 원래 리스트로 관리해서 있냐 없냐로 따졌었는데 그랬더니 계속 시간초과가 났다..
그래서 입력받은 문자열 배열을 다 받아둔 다음에 set을 이용하여 반복된 문자열을 없애버렸다.
반복된 문자열을 없앤 리스트 길이를 mode(한 게임당 사람 수-1)으로 나눠주면 답이 나온다 !
1을 빼는 이유는 (본인 포함해서) 게임 당 플레이어 수 이기 때문이다
다른 사람 답
n, k = sys.stdin.readline().split()
people = set() # set을 이용해 주어진 사람들을 중복 제거
for _ in range(int(n)):
people.add(sys.stdin.readline().rstrip())
p = len(people)
if k == 'Y': # 윷놀이
print(p)
elif k == 'F': # 같은 그림 찾기
print(p//2)
else: # 원카드
print(p//3)
와...대박 이렇게 풀 수가 있구나
뭔가 비슷하면서 다르지만 매우 간단하다
Kotlin 버전 답
import java.util.*
fun main() {
val scanner = Scanner(System.`in`)
val dic = mapOf('Y' to 2, 'F' to 3, 'O' to 4)
val (num, modeChar) = scanner.nextLine().split(" ")
val mode = dic[modeChar[0]] ?: error("Invalid mode")
val total = mutableSetOf<String>()
repeat(num.toInt()) {
total.add(scanner.nextLine())
}
println(total.size / (mode - 1))
}
배열 선언하는 게 너무 익숙하지 않다. . .
값 입력받는 것도 . . .
맨날 gpt로 Kotlin 코드를 짠 죄 😂
이제 네이버 부캠 2차 문제를 위해.. Kotlin으로 문제를 푸는 습관을 가져야한다..
하하 파이썬 정말 편했는데 코틀린으로 뿌셔보자
'코딩테스트' 카테고리의 다른 글
[Python] 백준 1138번 - 한 줄로 서기 (0) | 2024.06.21 |
---|---|
[Python] 백준 19941번 - 햄버거 분배 (0) | 2024.06.20 |
[Python] 백준 10431번 - 줄세우기 (0) | 2024.06.13 |
[Python] 백준 - 2563번 색종이 (0) | 2024.06.12 |
[Python] 백준 1158번 - 요세푸스 문제 (1) | 2024.06.11 |