분류 전체보기176 백준 20183번 골목 대장 호석 - 효율성 2 (Python) .. 우당탕탕 시행착오들.. 1. 문제 조건- N개의 교차로와 M개의 골목 (교차로 : 노드 / 골목 : 간선)- 각 간선의 가중치가 그 골목의 요금- 소지한 돈보다 많은 비용이 나오면 그 경로로는 갈 수 없음- 수치심은 경로 상에서 가장 많이 낸 돈의 금액, 최소한의 수치심을 얻어야 함- 수치심을 줄일 수록 많은 돈이 필요하고 수치심이 높을 수록 적은 돈이 필요함 - 입력 - 범위1 1 1 1 1 2. 아이디어 및 시행착오시행착오 1. 다익스트라로 경로를 이동하되, 이동한 경로의 총합으로 최소비용을 계산하는 것이 아니라, max 배열을 두고 max배열을 갱신하면서 다익스트라를 돌리려고 했다. (가지고 있는 돈보다 경로를 지나온 합이 작을 때만 갱신하도록 dist배열도 관리를 하긴 한다.) 특정 노드에 왔을 때, 그 노드까지 .. 2024. 8. 18. 백준 17135번 캐슬 디펜스 (Python) 1. 문제 조건문제 조건이 정말 많고 다양해서 문제를 잘 읽어야하는 문제였다. 당장 코드부터 써가는 버릇을 고치려고, 설계부터 하고 코드를 다 짰지만 문제를 꼼꼼히 읽지 않아 엉망진창으로 설계한 코드를 짜버리고 말았다. 문제가 복잡할 수록 조건을 잘 정리해서 빠지는 부분이 없게 설계하도록 주의해야겠다. 본 문제는 배열 내에 있는 적을 맨 아래행에 궁수를 배치해 적을 잡는 게임을 코드로 설계하는 문제이다. 게임의 규칙은 아래와 같다. 1. 궁수를 성이 있는 칸인 배열의 맨 아래행(N+1번째 행)에 3명 배치한다.2. 궁수는 각 턴마다 적 하나를 죽이며, 세 명의 궁수는 동시에 공격한다. 즉, 여러 궁수가 하나의 적을 동시에 공격할 수 있다.(적은 각 칸에 최대 한명만 존재할 수 있다.)3. 궁수가 죽일.. 2024. 8. 7. (Python) 백준 2164번 카드2 파이썬에 적응하는 중인데, 아직 파이썬의 자료구조 활용에 많이 서툴다. 이 문제에서 List를 사용해 Queue를 구현해 풀었다가 시간초과를 만나버렸다. 초기 코드n = int(input())cards = [ i+1 for i in range(n)]while len(cards)>1: cards.pop(0) if len(cards) == 1: break cards.append(cards.pop(0))print(cards[0]) 정답 코드from collections import dequen = int(input())cards = deque([i+1 for i in range(n)])while len(cards)>1: cards.popleft() if len(cards) == 1.. 2024. 7. 20. Python으로 Queue 사용하기 List 사용하기삽입 : append() 활용삭제 : pop(0)주의 : pop(0)은 시간복잡도가 O(N)이므로 pop이 자주 발생하는 상황에서는 비효율적이다.collections 모듈의 deque 사용하기from collections import deque#선언dq = deque([])#삽입dq.append(1)#삭제 : 원소가 없다면 IndexError발생dq.popleft()#전체 삭제dq.clear()#count : x와 같은 원소의 개수 세기dq.count(x)#회전 : n만큼 위치 이동 (n>0이면 오른쪽, nQueue활용 뿐 아니라 deque에 있는 함수들도 추가로 몇 개 정리해봤다. 나중에 deque 활용을 위해 함수들을 한번 더 정리해봐야겠다.queue 모듈의 Queue 사용하기from.. 2024. 7. 20. [기본 문법] Python 기본 문법을 익혀보자 ! Java에 이어 Python 익히기에 도전한다. 사실 개발 처음 배울 때 Python부터 익혔는데 1년동안 사용하지 않고 Java만 미친듯이 했더니 하나도 기억나지 않는다 ^., ^ 그래서 다시 공부해보는 Python 기본 문법!~ 변수Java에 비해 훨씬 간단한 Python 변수 선언. type을 지정할 필요없이 아래와 같은 형식으로 선언하면 된다. (type은 알아서 지정됨.)(변수명) = 값 a = 10000b = 'variable'print(type(a))print(type(b))# # - 문자열을 정수로 변환num_str = "720"num = int(num_str)print(num, type(num))#720 - 문자열을 실수로 변환num_str = "720"num = float(n.. 2024. 7. 14. 자료구조 - 해시테이블 (Java, HashMap) 1. 개념해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 주소로 하여 데이터를 key와 함께 저장하는 자료구조key를 활용하여 value값 조회 가능매우 빠른 평균, 삽입, 삭제, 탐색연산이 제공되는 자료구조 구성- key hash function의 input고유한 값키 값 그대로 저장할 경우 다양한 키의 길이만큼 구성해야하므로 일정한 길이의 해시로 변경함- hash functionkey를 고정된 길이의 해시로 변경해주는 함수로 해시 함수를 거치는 과정을 "hashing"이라고 함서로 다른 key가 같은 hash 값을 같게 되는 경우를 해시 충돌이라고 하며, 이 충돌이 적을 수록 좋은 해시함수라고 할 수 있음- value저장소에 저장되는 값- hash table해시함수를 사용하여 해시값으로 매.. 2024. 5. 24. 이전 1 2 3 4 ··· 30 다음