[백준] 1월 14일 금요일의 기록
·
Algorithm/백준
서론 나는 올해 꼭 취뽀를 하고싶었고 그 결과 작년 11월부터 자료구조 스터디를 진행했다. 자료구조 스터디를 하며 12월 부터는 꾸준히 백준 Class별로 문제를 해결하기로 결심했다. 아주 예~전에 잠깐 Bronze문제들을 해결하던게 있어서 Class1은 금세 끝났다. Class2로 넘어가면서부터 본격적으로 자료구조 스터디를 하며 공부한 stack, queue, sort의 기본적인 문제들이 나오기시작했다. 원래 12월 내로 Class2를 끝내고 싶었지만 생각보다 쉽지 않아서... 그냥 꾸준히 1일1문제라도 지키자고 다짐했다. 본론 이왕하는거 울학교 랭킹안에라도 들자는 마음으로 세부 목표를 정했다. 처음엔 울학교 랭킹 100위 안에 들기!(대략 실버1~2정도) 그리고 매일 잔디 심어주기!! 처음 시작할 ..
[백준] 10845 큐 그리고 나의 멍청함...
·
Algorithm/백준
1. 문제 2. 소스코드 import sys N = int(sys.stdin.readline()) que = [] for _ in range (N): word = sys.stdin.readline().split() cmd = word[0] if cmd == 'push': que.append(int(word[1])) elif cmd == 'pop': if len(que) > 0: print(que.pop(0)) else: print(-1) elif cmd == 'size': print(len(que)) elif cmd == 'empty': if len(que) == 0: print(1) else: print(0) elif cmd == 'front': if len(que) == 0: print(-1) els..
[백준] 10828 스택
·
Algorithm/백준
1. 문제 2. 코드 import sys N = int(sys.stdin.readline()) stack = [] for _ in range (N): word = sys.stdin.readline().split() order = word[0] if order == 'push': stack.append(int(word[1])) # word로 받은 정수를 stack에 추가 elif order == 'top': if len(stack) >0: print(stack[-1]) else: print(-1) #stack에 원소가 있으면 가장 마지막 원소 print elif order == 'pop': if len(stack)>0: print(stack.pop()) else: print(-1) #stack에 원소가 있..
[백준] 10773 제로
·
Algorithm/백준
1. 문제 2. 코드 cnt = int(input()) stk = [] for i in range (cnt): num = int(input()) if (num == 0): stk.pop() elif(num !=0): stk.append(num) print(sum(stk)) 3. 관련 함수 1) append : 리스트의 마지막에 item 추가 >>> a = [1, 2, 3] >>> a.append(4) >>> a # [1, 2, 3, 4] 2) pop : 리스트의 마지막 요소 print해주고 삭제 >>> a = [1, 4, 3, 2] >>> a.pop() # 2 >>> a # [1, 4, 3]
[백준] 15829번과 아스키코드
·
Algorithm/백준
#백준 15829 Hashing chr(97) char(44032) # 'a' '가' ord('a') # 97 1. 문제 2. 코드 L = int(input()) M = 1234567891 r = 31 sum = 0 nums = input() for i in range(len(nums)): num = ord(nums[i])-96 sum+=num*(r**i) print(sum%M)
[백준] 10866 덱 그리고 오타
·
Algorithm/백준
1. 문제 2. 소스코드 from collections import deque import sys N = int(sys.stdin.readline()) deq = deque() for _ in range (N): word = sys.stdin.readline().split() cmd = word[0] if cmd == 'push_front': deq.appendleft(int(word[1])) elif cmd == 'push_back': deq.append(int(word[1])) elif cmd == 'pop_front': if deq: print(deq.popleft()) else: print(-1) elif cmd == 'pop_back': if deq: print(deq.pop()) else: p..
[백준] 10989 수 정렬하기 3
·
Algorithm/백준
#백준 10989 수 정렬하기 3 1. 시간초과 코드 n = int(input()) result = [] for i in range(n): a = int(input()) result.append(a) result.sort() for i in range(n): print(result[i]) - for문 속에서 append를 사용하게 되면 메모리 재할당이 이루어져서 메모리 사용이 비효율적이다 이 문제는 시간&메모리 제한이 엄격하기 때문에 이 점을 고려하여 10000크기의 배열을 선언해주어 배열만큼의 메모리만 사용하도록 코드를 변경하였다. 2. [0]*10001 배열 사용 import sys N = int(input()) nums = [0]*10001 for _ in range(N): nums[int(sys...
[백준] 10816 숫자 카드 2와 Python 빈도수 계산
·
Algorithm/백준
#백준 10816 숫자 카드2 1. Counter 이용 from collections import Counter N = int(input()) card1 = list(map(int, input().split())) cnt = Counter(card1) M = int(input()) card2 = list(map(int, input().split())) for i in card2: if i in cnt: print(cnt[i],end=' ') else: print(0, end=' ') 1.1 Counter from collections import Counter list1 = ['A','B','C'] list2 = ['B','B','C'] cnt = Counter(list1) #cnt = ({'A':1, ..
[백준] 2798블랙잭과 Python itertools의 순열&조합
·
Algorithm/백준
#백준 2798 블랙잭 1. 문제를 풀면서 모든 조합을 다생각해야 하나? 그럼 반복문이 많이 필요할 것 같은데?...음 2. Python의 itertools 모듈에서는 반복적인 함수를 지원한다. 순열, 조합 뿐만아니라 단순반복인 함수의 종류가 꽤 된다. 3. 하지만 오늘은 2798번을 풀면서 필요했던 순열, 조합에 대해서 조사해보았다. product() : 중복순열 => 원소간 순서 O, 같은 원소 중복O permutations() : 순열 => 원소간 순서O, 같은 원소 중복X combinations() : 조합 => 원소간 순서X, 같은 원소 중복X combinations_with_replacement() : 중복조합 => 원소간 순서 X, 같은 원소 중복O 이라고 생각하면 편할 듯 하다! 4. 전체..
[백준] 11866 요세푸스 문제 0과 Python deque
·
Algorithm/백준
#백준 11866 1. 처음에 문제를 읽고 원형linked list를 떠올렸다. 2. 아직 linked list는 익숙하지가 않아서 구글링을 하던중 deque를 사용하는 사람들이 대다수였다. from collections import deque n, k = map(int,input().split()) deq = deque([]) for i in range(1, n + 1): deq.append(i) print(''.format(deq.pop())) else: print('{},'.format(deq.pop()), end=' ') - 이건 내가 작성한 코드( deque의 rotate사용, 92ms) - append로 사용하면 이중 반복문이 되면서 시간이 늘어났다! - 틀렸습니다는 print( end = '..