본문 바로가기
728x90

분류 전체보기183

[백준/BOJ] - 9012번 python 풀이 - stack 개념 Key Point 1. 리스트를 하나 만들어 놓고 '('이 들어오면 해당 리스트에 저장한다. 2. 해당 리스트가 비어있는데 ')'가 들어오면 바로 'NO' 3. 반복문이 종료됐을 때 '('이 존재할 경우 NO else -> Yes 알게 된 문법 for i in n: n list에서 list의 원소를 뽑아낸다. num=int(input()) for _ in range(num): result=[] count=0 n=input() for i in n: if i=="(": result.append(i) elif i==")": if len(result)==0: # result 비었는데 )가 먼저 들어올 경우 count=-1 break result.pop() # (가 이미 있을 경우 = len(result) != .. 2022. 11. 22.
[백준/BOJ] - 2839번 python 풀이 - Greedy algorithm Key Point Case 1: 5로 전부 나눠질 경우 Case 2: 3으로 전부 나눠질 경우 Case 3: 3과 5가 섞여서 나눠질 경우 Case 4: 나눠지지 않을 경우 맨 처음 5로 나눠지는 경우부터 처리 while 문에서 해당 조건문은 일단 맨처음 5로 나눈 몫을 통해 (전체 N에서 몫*5의값을 빼고) 그 값을 3으로 나눴을 때 나눠지면 깔끔하게 나눠지는 것으로 간주. 순차적으로 5로 나누었을 때 몫의 값을 1씩 빼며 3으로 나눠지는지 확인하는 로직이다. if (N - numb*5) % 3 != 0: 1. 해당 조건문이 0이 될 경우 5kg와 3kg의 콜라보 가능 or 3kg 봉지로만 표현 가능 2. numb의 값(5로 나눴을 때 값)이 0이 될 때까지 3으로 나눠지지 않을 경우 print(-1).. 2022. 11. 21.
[백준/BOJ] - 2164번 python 풀이 - deque 자료구조 사용 Key Point 1. list는 random access에 특화되어있어 시간 복잡도가 높다. 하지만 deque나 que는 비교적 낮기에 이번 문제는 deque를 사용하여 해결해보았다. queue를 통해서 푸는 것도 가능은 하지만 비교적 복잡할 거 같아 보다 더 직관적인 deque를 사용하였다. 알게 된 문법 from collections import deque queue = deque([1, 2, 3, 4, 5]) queue.pop() #맨 뒤부터 pop queue.append() #맨 뒤부터 insert queue.popleft() #맨 왼쪽부터 pop queue.appendleft() #맨 왼쪽부터 append 정답 코드 from collections import deque import sys N .. 2022. 11. 21.
[백준/BOJ] - 1920번 python 풀이 - 이분 탐색(Binary Search) Key Point 이 문제는 시간 초과와 메모리 초과로 인해 코드를 여러번 다시 작성했던 문제이다. 이분탐색에 대한 알고리즘을 알면 해결된다는 조언에 해당 알고리즘을 조사하여 해결하였다. 알게 된 문법 for value in enumerate(lists2): if len_temp < int(value[1]): print(0) go = 0 if go == 1: if temp[int(value[1])-1] == 1: print(1) else: print(0) go = 1 다음과 같이 반복문을 사용하면 리스트에 있는 value의 값을 꺼내 쓸 수 있다. index의 값 또한 사용 가능. 하지만 해당 value는 tuple 타입이기 때문에 int(value[1])로 선언해야 value를 받을 수 있다. inde.. 2022. 11. 21.
[백준/BOJ] - 11866번 python 풀이 Key Point 1. 어떤 변수가 필요할지 코딩 시작하기 전에 구상하고 들어가자. - pop을 나타내는 변수 cnt - 0을 제외하고 탐색한 횟수 check - index를 나타내는 ran 알게 된 문법 num index에 0이라는 값을 삽입한다. list1.insert(num,0) import sys N, K = map(int,sys.stdin.readline().split()) # 7 3 cnt = 0 # 몇번 뽑아냈는지 pop check = 0 # 유효하게 탐색한 횟수 ran = 0 list1 = [i for i in range(1, N+1)] # 0 ~6번째 1~7 print('') 2022. 11. 20.
[백준/BOJ] - 11650번, 11651번 python 풀이 Key Point 1. sort로 간단하게 풀 수 있다. 알게 된 점 1. key = lambda를 통해 sort의 기준을 정할 수 있다! ( 0번째 index 기준, 그 값이 같으면 1번째 index 기준) 11650번 답 list1.sort(key=lambda x: (x[0], x[1])) 11651번 답 list1.sort(key=lambda x: (x[1], x[0])) import sys N = int(sys.stdin.readline()) list1 = [[0 for _ in range(2)] for _ in range(N)] for i in range(N): list1[i] = list(map(int, sys.stdin.readline().split())) list1.sort(key=lamb.. 2022. 11. 20.
728x90