일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 부트캠프
- 개발자
- 디자인패턴
- 코딩테스트
- 우테코 프리코스
- 우테코 7기
- 비전공자
- 삼성 청년 SW 아카데미
- SWEA
- dfs
- 백준 2003
- 우테코
- 코딩
- 13기
- 마이스터고
- SSAFY
- 백준
- 프리코스
- 취뽀
- 삼성 부트캠프
- 코테
- UML
- 싸피 13기
- 정처기
- 삼성청년SW아카데미
- 파이썬
- 삼성 청년 sw아카데미
- 싸피
- 삼성
- 정보처리기사
Archives
- Today
- Total
룰루코딩
백준 1620 나는야 포켓몬 마스터 이다솜 본문
문제
솔루션
n,m = map(int,input().split())
dict = {}
for num in range(1,n+1):
po =input()
dict[num] = po
dict[po] = num
for i in range(m):
ans=input()
if ans.isdigit():
print(dict[int(ans)])
else:
print(dict[ans])
깨달은점
n,m = map(int,input().split())
li=[]
for _ in range(n):
li.append(input())
for _ in range(m):
ans = input()
if ans in li:
print(li.index(i)+1)
else:
print(li[i-1])
처음에 이런식으로 하려했는데 시간초과가 났다.
리스트(O(n))는 딕셔너리(O(1))보다 시간복잡도가 복잡하다.
딕셔너리를 이용해서 풀어야한다.
dict[num] = po
dict[po] = num
딕셔너리에 {포켓몬 이름 : 번호}, {번호 : 포켓몬 이름} 값을 저장하여 물어보는 값을 찾는것이다.
또한 isdigit()는 string 클래스에 있는 메서드로
문자열이 숫자로만 이루어져있는지 확인하는 함수이다.
모든 문자가 숫자로만 이루어져있으면 True를 반환하고, 문자가 존재하면 False를 반환한다.
import sys
input = sys.stdin.readline
n,m = map(int,input().split())
dict = {}
for num in range(1,n+1):
po =input().rstrip()
dict[num] = po
dict[po] = num
for i in range(m):
ans=input().rstrip()
if ans.isdigit():
print(dict[int(ans)])
else:
print(dict[ans])
시간이 엄청나게 단축된다.
import sys
input = sys.stdin.readline().rstrip()
를 사용하면서 주의할 점은 .rstrip()을 사용하는 것. (문자열 입력받을때 사용)
이것을 이용하지 않으면 타입오류가 뜬다.
=> sys라이브러리의 readline()은 \n도 받으므로, 이 공백문자를 제거하는 역할을 rstrip()이 하는것이다!!
'백준' 카테고리의 다른 글
백준 7785 회사에 있는 사람 (0) | 2024.10.01 |
---|---|
백준 17219 비밀번호 찾기 (2) | 2024.09.28 |
백준 1789 수들의 합 (1) | 2024.09.26 |
백준 11047 동전 0 (0) | 2024.09.25 |
백준 11723 집합 (0) | 2024.09.24 |