목록분류 전체보기 (163)
Bamboo is coming
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEE5QV/btrqAnol5Pi/1VdhekkBA08p9iF5pvBxl0/img.png)
- 알고리즘 분류 : 구현, 자료구조, 문자열, 해시를 사용한 집합과 맵 첫번째 시도 -> 시간초과 #백준 19583번 사이버개강총회 실버2 import sys input = sys.stdin.readline def timeToMinute(time): #시간을 분으로 환산하는 함수 timeH, timeM = time.split(':') time = timeH*60 + timeM return time S,E,Q = input().split() #시작 시간 S, 끝낸 시간 E, 스트리밍 종료Q S = timeToMinute(S) E = timeToMinute(E) Q = timeToMinute(Q) T = [] #학회원의 입장시간 T I = [] #학회원의 아이디 I cnt = 0 #출석이 확인된 학회원의 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/opFw7/btrqsGRcc3j/9zJ0QHljBHKymbRXqUDz41/img.png)
알고리즘 분류 : 구현, 자료구조, 시뮬레이션, 큐 주차공간 N, 차량수 M 주차공간 N개의 무게당 요금 배열 fee_w 차량수 M개의 무게 배열 weight 총 수입 fee = 0 주차 공간 배열 d 대기 공간 큐 wait(FIFO) 주차 공간 배열을 만들 때 처음 영업하면서 주차공간을 0으로 각각 할당한다. 빈 곳을 0으로 두고 0 이상인 공간은 모두 주차된 것으로 간주한다. 대기 공간 같은 경우에는 먼저 대기한 차량을 먼저 주차시켜야 하기 때문에 큐를 사용했다. 스택이랑 큐가 너무 헷갈린다.ㅠㅠ 차량을 주차하는 코드는 carIn 함수를 사용해서 길이를 좀 줄였다. # 백준 5464 주차장 실버2 from collections import deque def carIn(car): #자리가 없으면 if ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/baDzXG/btrqtTQkwTU/fQnzchrvkEzVdiJZbJs4H1/img.png)
스택으로 풀면 되겠다 해서 시작했다. 자바에는 스택 라이브러리가 있었는데 파이썬은 스택 라이브러리가 없어서 deque를 큐 대신 사용했다. 오른쪽에 들어가는게 기본이어서 popleft로 뽑아내면 된다. 그리고 검색해봤더니 deque에 maxlen으로 크기를 지정해줄 수 있는 기능이 있었다. 그래서 maxlen으로 크기 지정해서 푸는 걸로 했는데 if문으로 크기 조건문을 넣지 않으니까 계속해서 50점이 나왔다. #백준 15828 Router 실버4 from collections import deque import sys input = sys.stdin.readline N = int(input()) #라우터 버퍼의 크기 R = 0 # 입력받을 패킷 초기화 s = deque(maxlen=N) # 큐 생성 wh..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wvdJd/btrpUHph9yK/gWTWe4fJGByZTlwrCkbmBk/img.png)
자료구조, 문자열, 스택 이용하는 문제인데 문자열 비교해서 숫자로 풀었다. 여는 괄호면 +1 , 닫는 괄호면 -1, 여는 괄호 없이 닫는 괄호만 있는 경우(숫자가 0보다 작으면 반복문 빠져나오기) vps 함수를 만들어서 str을 각각 판별하고 결과를 op 배열에 담아서 출력했다. #백준 9012 괄호 실버4 def vps(data): a=0 for i in data: if i == '(': a += 1 elif a>0: if i == ')': a -= 1 else: a=1 break if a == 0: op.append('YES') else: op.append('NO') T = int(input()) #테스트데이터 개수 T op = [] for _ in range(T): str = input() vps(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CF6rc/btrp0ZPeYK8/2Bf4YZtTZbOx48gcqF7hqK/img.png)
https://www.acmicpc.net/problem/9519 저렇게 숫자가 터무니 없이 큰 경우에는 패턴을 찾는 문제라고 한다. 그래서 처음에 풀 때 패턴 없이 전부 찾다가 시간초과 나와서 다시 풀었다. # 백준 9519 졸려 실버1 import sys input = sys.stdin.readline n = int(input()) #깜빡인 횟수 word = input().strip() #깜빡인 후 바뀐 단어 wordsize = len(word) check = word w=[] w.append(word) while True: tmp = '' if wordsize % 2: for i in range(wordsize//2): tmp += check[i] tmp += check[-i-1] tmp += ch..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfDCet/btrp0IfSxkd/6NWrQ4MnU0PFsNNfP9wOak/img.png)
# 백준 16948 데스나이트 실버1 from collections import deque import sys input = sys.stdin.readline def bfs(): q = deque() count = 0 visit = [[0]*N for _ in range(N)] visit[r1][c1] = 1 q.append((r1,c1)) while q: count += 1 for _ in range(len(q)): i,j = q.popleft() for a in range(6): nr,nc = i+dr[a], j+dc[a] if nr == r2 and nc == c2: return count if 0
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cgkeZV/btrpTgFrYfU/l5S9F2OtKG7JC4M682ANk0/img.jpg)
저번주에 2644번 촌수계산 DFS 문제를 블로그 보고 얼렁뚱땅 BFS로 풀어놓고 손을 놓고 있었다. 이 문제도 BFS 문제 푼거랑 비슷하게 풀면 되지 않을까 하고 그렇게 시작하다가 dfs에서 막혀서 한 2시간정도 쳐다만 봤다. 2644번에서는 각 노드가 연결되어 있는 노드 배열로 풀었기에 이것도 그런 식으로 1번 노드 탐색 후 2번 노드, 그리고 2번 노드 내에 다른 연결된 노드가 방문되지 않았으면 탐색하는 식으로 해보려고 하다가 도저히 못 풀겠어서 블로그를 봤다. dfs는 스택, 재귀 두 가지 방식이 있지만 복잡도 면에서 거의 모두 재귀함수로 푸는 것 같았다. 스택으로 풀어보고 싶었지만 딱 보기에도 너무 어려워 보여서 그냥 재귀로 푸는 방법으로 봤다. 재귀도 잘 모르기 때문에 이 참에 배워두면 좋을 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjDpqd/btrp0ZPeCft/k1h5F6LH16uFZrArKeA0d0/img.png)
# 백준 2644 촌수계산 다시 해보기(210707) # https://www.acmicpc.net/problem/2644 import sys from collections import deque input = sys.stdin.readline n = int(input()) # 사람수 a,b = map(int,input().split()) # 관계를 구할 2명 m = int(input()) # 관계수 s = [[] for i in range(n+1)] # 관계를 담을 노드 result = [0 for i in range(n+1)] def bfs(start): q = deque() q.append(start) visit = [0 for _ in range(n+1)] visit[start] = 1 while..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bhyuLU/btrp08edLcC/FBUH6QX7nRlltahkXJnkik/img.jpg)
DP 몬데.. 니 몬데... ;; 아래로 순차적으로 세분화 해서 하는 건 알겠는데 응용을 할 수가 없었다. import sys input = sys.stdin.readline ★ 시간 제한에 중요한 코드 이거 하나만 넣었는데도 속도 제한이 안걸리고 풀려났다. 파이썬으로 코딩테스트를 본다면 꼭 알아야 하는 코드라고 한다. 파이썬에는 내장함수로 input, raw_input이 있다. input은 입력값에 따라 자동으로 형 변환을 해주고 raw_input은 무조건 string으로 받는다. raw_input은 파이썬3로 넘어오면서 사라지게 되었고 input은 결과적으로 string으로 받게 되었다. 파이썬3에서 input은 prompt 메세지를 띄우는 기능과 입력받은 개행문자를 삭제하는 기능도 수행하기 때문에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/byTfYc/btrp0JTnX32/4jxugsX9rro7YnPUvMK4k1/img.png)
학교 커리큘럼에 따라 이번 학기에 자바랑 자바스크립트를 같이 배우고 있다. 아무래도 비슷해서 이해가 쉽긴 하지만 시험을 봐야하는 입장에서 let, int 같이 사용하는 단어들이 조금씩 다른게 너무 헷갈려서 머리가 너무 아프다 ㅠㅠ 1. let book = { name: 'Nature of Code', price: '30000원', author: '다니엘 쉬프만', ISBN: 9788968481901, pages: '620페이지' }; 2. function product(name,weight,price){ this.name=name; this.weight=weight; this.price=price; } let pro = new product("돼지삼겹살",100,1690); product.calculat..