본문 바로가기

Algorithm245

[프로그래머스] Lv2 - 괄호 회전하기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr def solution(s): answer = 0 for k in range(len(s)): temp = s[k:]+s[:k] if check(temp): answer += 1 return answer def check(temp): arr = list(temp) if arr[0] in (')', '}', ']'): return False if arr[-1] in ('(', '{', '['): return False # 스택 이용 dict = {')': '(', '}': '{', ']': '['} stack = [] for x in arr:.. 2022. 4. 5.
[백준] 1365번 - 꼬인 전깃줄 (파이썬) # 꼬인 전깃줄 import bisect N = int(input()) arr = list(map(int, input().split())) result = [arr[0]] for i in range(1, len(arr)): index = bisect.bisect_left(result, arr[i]) if index == len(result): result.append(arr[i]) else: result[index] = arr[i] print(len(arr)-len(result)) 이분탐색, bisect 1. 입력을 받는다. 2. result 리스트 선언 3. arr의 각 원소마다 - result가 비었으면 append - bisect_left로 result에 x가 들어갈 인덱스를 구한다. - index.. 2022. 4. 5.
[백준] 13905번 - 세부 (파이썬) # 세부 import heapq import sys input = sys.stdin.readline N, M = map(int, input().split()) start, end = map(int, input().split()) arr = [[] for _ in range(N+1)] for _ in range(M): a, b, weight = map(int, input().split()) arr[a].append((weight, b)) arr[b].append((weight, a)) visited = [0] * (N+1) def dijkstra(): q = [] heapq.heappush(q, (-sys.maxsize, start)) visited[start] = sys.maxsize while q: c.. 2022. 4. 5.
[프로그래머스] Lv2 - 순위 검색 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/72412 = score: right = mid else: left = mid + 1 answer.append(len(arr)-left) 2021 카카오 블라인드, 이분탐색, 해시 1. dict = 각 키마다 점수를 저장해 줄 defaultdict(list) 2. info리스트 내부의 값마다 (점수를 제외한 값을 key, 점수를 score) - add : key의 리스트 값 중 0부터 4개를 가지는 모든 값(조합)을 문자열로 변환, 해당 값의 dict에 score 추가 3. 모든 키의 값(점수가 들어있는 리스트)들을 정렬 4. query리스트의 모든 값마다 'and'와 '-'를 삭제해주고 split() (점수를 제.. 2022. 4. 5.
[프로그래머스] Lv2 - 예상 대진표 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N programmers.co.kr def solution(n, a, b): count = 0 while a != b: count += 1 a = (a+1)//2 b = (b+1)//2 return count 풀이 1. a와 b가 같아질 때까지 - 각각 1을 더하고 2로 나눈 몫으로 업데이트, count += 1 2. count 리턴 2022. 4. 5.
[백준] 2866번 - 문자열 잘라내기 (파이썬) # 문자열 잘라내기 from collections import defaultdict R, C = map(int, input().split()) arr = [list(input()) for _ in range(R)] result = 0 start, end = 0, R-1 while start 2022. 4. 4.
[프로그래머스] Lv2 - 게임 맵 최단거리 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr from collections import deque dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] def solution(maps): global N, M N = len(maps)+1 M = len(maps[0])+1 maps = [[0]*(len(maps[0]))]+[[0]+map f.. 2022. 4. 3.