본문 바로가기

알고리즘26

[python] pccp 모의고사 1 외톨이 알파벳 📜 접근 방법 특정 문자가 연속되지 않을 경우 외톨이 알파벳이라고 판단 무조건 하나의 덩어리로 뭉쳐있어야함! 딕셔너리에 특정 문자 갯수를 넣어줌 (key : value) key는 특정 문자, value는 특정 문자 갯수 주어진 문자열 수만큼 반복 특정 문자의 갯수가 2 이상일 경우 특정 문자의 갯수만큼 반복문을 돌리는데 연속되게 문자가 나온다면 외톨이가 아닌걸로 판단 이 문자는 판단되었으니 갯수를 -1로 변경하여 더이상 확인하지 않게함 특정 문자의 갯수만큼 반복문을 돌리는데 연속되게 문자가 나오지 않으면 외톨이로 판단 answer에 넣어주고 이 문자는 판단되었으니 갯수를 -1로 변경하여 더이상 확인하지 않게함 answer이 빈 문자열이면 주어진 문자열에 외톨이 알파벳이 없으므로 N을 추가 ✅ 정답 코드 .. 2023. 3. 18.
[python 백준 3107] IPv6 📜 접근 방법 1. ":"를 기준으로 문자열을 쪼갠다. 2. 쪼갠 문자열을 for문을 돌린다. 3. 빈 문자열일 경우 현재 문자열 갯수만큼 "0000:"을 추가한다. 4. 빈 문자열이 아닐 경우 (4 - s의 갯수)만큼 0을 추가한 후 문자열 s + : 를 추가한다. ❌ 실패 코드 import sys s_list = sys.stdin.readline().strip().split(":") res = "" check = True for s in s_list: if s == "": if check: if len(s_list) < 8: for i in range(8 - len(s_list)): res += "0000:" check = False res += "0000:" else: if len(s) != 4: .. 2023. 3. 13.
[python 백준 1715] 카드 정렬하기 📜 접근 방법 우선순위 큐를 활용 1. 힙에다 주어진 숫자들를 넣는다. 2. 만약 숫자가 1개만 주어지면 합칠것이 없으니 0 출력 후 종료 3. 힙에 숫자가 2개 이상일 경우 반복 1. 가장 작은 수 2개를 뽑은 후 그 숫자를 더한다. 2. 그 후 그 두 숫자를 더한 후 힙에 넣어준다. 4. 결과값 출력 ❌ 실패 이유 카드를 섞은 후 그 값도 포함시켜서 가장 작은 수를 찾아야하는데 그대로 더해서 최소값이 나오지 않았다. ✅ 정답 코드 import sys import heapq n = int(sys.stdin.readline()) heap = [] for i in range(n): heapq.heappush(heap, int(sys.stdin.readline())) if n == 1: print(0) el.. 2023. 2. 4.
[python 백준 1541] 잃어버린 괄호 📜 접근 방법 주어진 식에 적절하게 괄호를 넣어야한다. 조건1. 식의 값을 최소로 만들어야한다. 조건2. 식은 0~9, +, - 로만 이루어져 있다. 식의 값을 최소로 만들기 위해선 -하는 값을 최대로 만들어주면 된다. 그러기 위해선, -를 기준으로 그 다음 -가 나오기 전까지, 뒤에 +인 값들을 다 더한 후 빼주면 최소값이 된다. 즉, 괄호는 -하는 부분부터 그다음 -하기 전까지 넣어주면 된다. ex) 괄호 전 : 35+35-34+21-46+34+43-45 괄호 후 : 35+35-(34+21)-(46+34+43)-(45) 문제 푼 방법 1. 식을 "-"를 기준으로 나누어준다. 2. 나눈 것을 "+"가 있을 경우 모두 더한 후 빼준다. 3. 반복 그러나 가장 처음 문자는 숫자이기에 "+"해줘야하므로 if.. 2023. 2. 2.