본문 바로가기
코딩테스트

[Python] 백준 25757번 - 임스와 함께하는 미니게임

by 박매트 2024. 6. 20.

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으로 문제를 푸는 습관을 가져야한다..

하하 파이썬 정말 편했는데 코틀린으로 뿌셔보자