본문 바로가기

코딩 테스트/Python_백준88

[백준/Python] 1764번 듣보잡 문제 ■ 1764번 듣보잡 문제 ■ 코드 풀이 #1: 통과(4028ms) 처음 문제를 봤을 때 두 가지 생각을 했습니다. 우선 첫 번째는 반복 횟수가 많으니 가급적이면 속도면에서 유리한 딕셔너리나 set을 활용해야겠다고 생각했습니다. 두 번째는 교집합을 표현할 수 있는 로직을 boolean을 활용하면 어떨까,라고 생각했습니다. 우선 먼저 그나마 편한 딕셔너리를 활용했고요. 듣도 못한 사람의 명단에 먼저 '이름 : False'로 딕셔너리에 저장합니다. 그리고 보도 못한 사람의 명단을 받으면서 기존에 이름이 없다면 당연히 교집합이 아니므로 다음 반복문으로 넘어(continue) 갑니다. 기존에 이름이 있다면 False를 True로 바꿔줍니다. 그럼 결과적으로 교집합인 사람들은 Value가 True로 남게 됩니다... 2023. 6. 1.
[백준/Python] 10816번 숫자 카드 2 문제 ■ 10816번 숫자 카드 2 문제 ■ 첫 번째 코드: 시간초과 먼저 제가 처음 작성했던 코드입니다. 저는 파이썬 딕셔너리를 활용하여 문제를 풀려고 했습니다. 먼저 모든 값을 list로 받고, count 메서드를 활용하여 '숫자: 개수' 쌍의 딕셔너리를 만들었습니다. 그리고 확인해야 하는 숫자를 key로 해서 값이 있으면 개수를 출력하고 없으면 0을 출력하도록 코드를 작성했습니다. 결론적으로 아래의 코드는 시간 초과가 발생했습니다. 코드를 쭉 살펴보니 시간이 크게 소요되는 구간은 list의 값을 하나하나 count 하여 dict를 만드는 구간 정도인 것 같았습니다. 그래서 이 구간을 이미 사전에 정의된 라이브러리를 활용해 두 번째 코드로 바꿔 봤습니다. M = int(input()) card_list =.. 2023. 5. 30.
[백준/Python] 1620번 나는야 포켓몬 마스터 이다솜 문제 ■ 1620번 나는야 포켓몬 마스터 이다솜 문제 ■ 코드 풀이 포켓몬에는 이름과 번호가 있으므로, 딕셔너리 자료유형을 사용해야 한다는 것은 어렵지 않게 추측할 수 있습니다. 그래서 포켓몬 번호가 key이고 이름이 value인 pokenmon_dict를 선언했습니다. 최종 정답을 출력할 때는 try & except 구문을 활용했습니다. 우선 정답 target을 int로 변환해 보고, 성공하면 입력받은 값은 숫자이므로 그대로 key값을 활용하여 이름을 출력합니다. 입력받은 값이 이름이면 int로 변환 시, 'ValueError'가 나오게 됩니다. 이 경우에는 value 값을 이용하여 key값, 이름을 출력하도록 코드를 작성했습니다. 그게 아래의 최초 코드입니다. 그러나 아래 코드는 시간초과가 발생했습니다. .. 2023. 5. 28.