자료구조14 [ 파이썬(python) ] 백준 1620 - 나는야 포켓몬 마스터 이다솜 📍 백준 1620 - 나는야 포켓몬 마스터 이다솜 백준 1620 - 나는야 포켓몬 마스터 이다솜 ⚡️ 나의 풀이 포켓몬을 좋아해서 풀어봤다. 입력의 범위가 100,000까지로 주어져있기 때문에 리스트로 풀기에 시간 초과가 날 것 같아 dict의 hash를 이용하여 풀었다. (hash 접근 시간복잡도는 O(1)) dict에서 value의 값을 찾는것은 dict[key]를 넣으면 되기 때문에 비교적 쉬웠으나 반대로 key를 찾는것은 dict로는 찾을 수 없기 때문에 dict.keys()만을 뽑아 리스트로 만드는 list(dict.keys())를 사용했고, 여기서 몇 번째인지 알기 위해 인덱싱을 사용했다. 입력을 key:value 형태인 dict로 넣어준다.(이때, key는 포켓몬 이름, value는 입력 순.. 2021. 6. 28. [ 파이썬(python) ] 백준 17608 - 막대기 📍 백준 17608 - 막대기 문제: 백준 17608 - 막대기 💡 나의 풀이 일렬로 세워진 막대기를 오른쪽에서 봐야 하기 때문에 막대기의 입력을 모두 받아 리스트로 만들고 문제를 풀었다. 처음에는 오답 판정을 받았는데 최대 높이의 막대기를 갱신해주지 않아서 그랬다. 첫번째 방법은 sticks인덱스를 거꾸로 확인하여 최대의 막대기를 갱신한 방법이고 두 번째 방법은 sticks를 pop()으로 하나씩 뽑아 최댓값을 갱신하는 방법을 사용했다. pop()을 사용한 방법의 실행시간이 약 30m/s정도 빨랐다. (사진에서 첫번째 방법은 하단, 두 번째 방법은 상단) # 첫번째 방법 import sys input = sys.stdin.readline n = int(input()) sticks = [int(input.. 2021. 6. 28. [ 파이썬(python) ] 백준 1021 - 회전하는 큐 📌 백준 1021 - 회전하는 큐 백준 1021 - 회전하는 큐 💡 나의 풀이 처음에는 한 번에 2번 연산 혹은 3번 연산을 따로따로 진행하고 둘 중 작은 값을 출력하는 건 줄 알았는데, arr을 보고 더 가까운 쪽에 2번 연산, 3번 연산을 판단해서 풀어야 하는 문제였다. 머리로는 이해했는데 막상 구현하려니까 잘 떠오르지 않았다. 결국, 함수를 선언하여 풀었지만 왠지 코드가 많아 보였다. 현재 arr을 보고 target값을 앞 / 뒤에서부터 몇 번째 떨어져있는지 계산한 index를 return한다.(compare_min_length) 앞쪽이 더 가까우면 2번 연산을 진행한다.(front_rotate) 뒤쪽이 더 가까우면 3번 연산을 진행한다.(back_rotate) 다른 사람의 코드를 보니까 2, 3번.. 2021. 6. 27. [ 파이썬(python) ] 백준 1966 - 프린터 큐 📍 백준 1966 - 프린터 큐 백준 1966 - 프린터 큐 ⚡️ 나의 풀이 문제가 잘 이해가 되지 않아 4 ~ 5번 정도 다시 봤다. 결론적으로 현재 index와 동일한 우선순위값이 제일 클 때 cnt+=1을 해주면 된다. 다른 테스트 케이스는 괜찮았는데 중복된 우선순위가 있는 문서를 처리할 때 고민을 많이 했다. 예제 입력 1 - 테스트케이스 중 제일 마지막 1, 1, 9, 1, 1, 1을 예로 들어보자. (그림, 글씨 양해 부탁드립읍니다.) 자신보다 높은 우선순위가 없을 때까지 회전한다.(이때는 cnt가 올라가지 않는다. why? 인쇄를 하지 않았기 때문) pop 할 위치(가장 첫 번째 index)에 위치했을 때 해당 값의 우선순위가 제일 높다면 pop처리하고 cnt+=1 해준다. 2번 과정에서 만.. 2021. 6. 24. 이전 1 2 3 다음