본문 바로가기

분류 전체보기165

[백준/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.
[백준/Python] 7785번 회사에 있는 사람 문제 ■ 7785번 회사에 있는 사람 문제 ■ 코드 풀이 저는 이 문제를 딕셔너리를 활용하여 풀었습니다. 기본적으로 파이썬에서 문자열 탐색은 set이나 dict 자료유형이 속도 측면에서 유리합니다. 그 이유는 해시 테이블(hash table)을 사용하기 때문인데요. 임의의 단어를 숫자로 맵핑하고 이를 인덱스처럼 활용해서 속도가 빠르다고 합니다. (아래 링크의 글에서 제가 처음 배웠기 때문에, 거기에 자세히 적어두었습니다.) 우선 출입 기록을 저장할 수 있는 딕셔너리(record_dict)를 선언합니다. 그리고 사람의 이름을 key값으로 상태가 enter이면 True를, leave이면 False를 value로 저장합니다. 그럼 결과적으로 출입 기록에 'leave'가 없는 사람의 value만 True가 됩니다. .. 2023. 5. 27.