728x90
반응형
단계별로 풀어보기 - [집합과 맵] - 1620번 나는야 포켓몬 마스터 이다솜 문제 문제가 포켓몬 컨셉이라 스토리가 꽤 긴데, 입력과 출력만 보면 된다. 문제링크 풀이 도감에 N개의 포켓몬이 순서대로 저장되어 있고, M개의 검사할 포켓몬들이 들어오는데, 문자열로 들어오면 번호를, 번호로 들어오면 문자열로 출력하면 된다. ✅ dictionary 사용 N개의 포켓몬들을 도감이라는 딕셔너리에 저장한다. key로 value를 바로 찾을 수 있게! key는 포켓몬 이름으로, value는 포켓몬 번호로 저장하였다. ✅ value-key 값으로 뒤집어서 저장하기: reverse dictionary 키값으로 찾는 것은 간단하지만, value값으로 key값을 찾고 싶다면, map함수를 이용하여 뒤집을 수 있다. for문..
단계별로 풀어보기 - [집합과 맵] - 10815번 숫자 카드 문제 문제링크 풀이 1차 시도_ 실패 이게 왜 집합과 맵 단계지 하고 그냥 풀었는데 n = int(input()) nums = [int(n) for n in input().split()] m = int(input()) cards = [int(n) for n in input().split()] for i in cards: if i in nums: print(1, end=' ') else: print(0, end=' ') 가차없이 시간 초과..ㅎ 2차 시도_ 성공 혹시 input함수 때문인가 싶어서 input 대신 sys.stdin.readline 함수로 바꾸고, 리스트 대신 set으로 만들었더니 통과되었다. set에 저장하면 출력했을 때 자동으..
단계별로 풀어보기 - [정렬] - 18870번 좌표 압축 문제 문제링크 풀이 x좌표 리스트를 받고, 순서대로 정렬한 다음, 그 순위를 출력해주면 된다. 처음 리스트를 정렬해서 그 인덱스 값을 출력하는 풀이를 생각했다. 유의할 점은, ✅ 같은 좌표는 같은 순위를 가지므로 압축된 좌표값도 동일하다. 그냥 정렬된 리스트의 인덱스 값을 출력하면 같은 좌표값도 순위가 다르게 나오기 때문에, 정렬된 좌표들은 set으로 표현하여 중복을 제거해줘야 한다. ✅ 시간 복잡도 고려 일단 input()함수보다 sys.stdin.realine 함수가 더 빨라서, 시간 제한이 있는 경우 후자를 선택하는 것이 좋다. 그리고 단순히 처음 입력받은 좌표 리스트의 좌표값을 순서대로 정렬된 리스트에서 찾아서 그 인덱스 값을 출력하도록 하..
알고리즘 - [너비우선탐색] - 2178번 미로 탐색 문제 문제링크 풀이 현재 위치의 좌표를 나타낼 Location 클래스를 만들어서 column, row, distance를 한번에 묶어서 다룰 수 있게 하였다. distance는 그 좌표까지 움직인 거리를 나타내며, 한칸씩 이동할 때마다 +1 해줘야 한다. BFS를 이용해야 하기 때문에, 현재 위치에서 상하좌우의 좌표를 살펴보면서, 미로 안에 있으면서 && 1이고 && 아직 방문하지 않은 좌표라면 그 좌표를 큐에 넣어준다. 이때 그 좌표의 거리는 이동하기 전 좌표의 dist에 +1한 값을 넣어줘야 한다. 그리고 새로운 좌표를 방문한 것으로 표시해준다. 상하좌우를 방문하는 것은 dx와 dy로 리스트를 만들어서 for문 안에서 돌아가면서 원래 좌표에 더하였..