여니의 취준 준비 253

[Python] n12933번 | 오리

[2022. 02. 22 품] inp = list(input()) quack = ['q','u','a','c','k'] len_inp = len(inp) idx = 0 answer = 0 visited = [False] * len_inp first = False if len_inp % 5 != 0 or inp[0] != "q": print(-1) exit() for a in range(len_inp): if inp[a] == "q" and not visited[a]: # 방문하지 않았고, q인 곳 -> 시작 구간이다. first = True for i in range(len_inp): if not visited[i] and quack[idx] == inp[i]: visited[i] = True if in..

[Python] n14467 | 소가 길을 건너간 이유 1

from copy import deepcopy n = int(input()) array = [] road = [] for i in range(n): a = list(map(int, input().split())) array.append(a[0]) road.append(a[1]) cnt = 0 answer=0 index_num_list=[] num = 0 example_list = deepcopy(array) for i in range(1, 11): ex = [] if array.count(i) 특정한 문자열 안에 찾고자하는 문자열이 있는지 확인하기. else: # 중복된 숫자가 있을 경우 if l[a] != b: # 만약 리스트에 있는 a의 방향과, b의 값이 다르다면? -> 이동횟수 +1 ct += 1..

[Python] n1913 | 달팽이

[2022.02.22 푼 코드] n = int(input()) input_num = int(input()) dic = {} array=[[0 for _ in range(n)] for _ in range(n)] temp = 1 # 1~N까지의 정수 (표에 들어갈) x, y = n // 2, n // 2 dic[temp] = (x, y) array[x][y]=1 # 상,우,하,좌 dx = [-1,0,1,0] dy = [0, 1, 0, -1] cnt = 1 for i in range(1, n + 1): if i==n: for j in range(i-1): # 상 temp+=1 x+=dx[0] y+=dy[0] dic[temp]=(x,y) array[x][y]=temp break if i % 2 != 0: # 상..

[Python] n20546 | 기적의 매매법

2021.09.27 코드 money = int(input()) array = list(map(int, input().split())) # 준현 def BNP(money, array): count = 0 # 주식 수 for today in range(len(array)): temp = money // array[today] money -= temp * array[today] count += temp money += count * array[-1] return money # 성민 def TIMING(money, array): up_cnt = 0 # 상승 연속체크 down_cnt = 0 # 하락 연속체크 count = 0 # 주식 수 for today in range(1, len(array)): temp = ..

[Python] n5597 | 과제 안 내신 분..?

# https://www.acmicpc.net/problem/5597 submit_list = [] for i in range(28): submit_list.append(int(input())) submit_list.sort() for _ in range(2): submit_list.append(None) a = 0 for i in range(1, 31): if i == submit_list[a]: a += 1 continue else: print(i) submit _list 에는 제출한 학생들의 번호를 넣고 보관한다. 2명의 번호는 None을 대신 넣어준다. 1부터 비교해나가다가, 만약 i값과 submit_list의 값이 다르면, submit_list의 index값만 1 증가시키고 continue문을 ..

[Python] n20053 | 최소, 최대 2

#1 #1 T=int(input()) array=[] for i in range(T): N=int(input()) array.append(list(map(int,input().split()))) for ex_list in array: print(min(ex_list), max(ex_list)) 위 코드에서는 메모리 낭비가 심했다! 왜 이럴까보니까, 굳이 입력받은 모든 리스트들을 담아둘 필요가 없었기 때문이다 #2 #2 T=int(input()) array=[] for i in range(T): N=int(input()) array=list(map(int,input().split())) print(min(array), max(array)) 위 코드처럼, 한 줄의 리스트만 저장하고, for문 돌면서 계속 내..

[Python] n1212번 | 8진수 2진수

# n = int(input()) # array = [] # # while n > 1: # result = n % 2 # n = n // 2 # array.append(result) # array.append(1) # # index = len(array) # for i in range(index - 1, -1, -1): # print(array[i],end='') 처음에 파이썬 내에 진수변환해주는 내장함수의 존재는 새까맣게 잊은채,, 빡구현을 시전한 과거의 나 자신,, 반성해 반성해 ㅠㅠ 8진수 입력 받아놓고 10진수로 계산함,, 바부 ㅠㅠ 학교 전공수업 때 배웠었는데, 그새 까먹어서 다시 복습 ^0^ # 다른 진수 -> 10진수로 변환 b=int('0b1010',2) o=int('0o12',8) h=i..

[Python] n19236번 | 청소년 상어

격자 크기 : 4 위치 : X,Y 한 칸에는 물고기 1마리 물고기 (번호,방향) >> 1쪽에 있는 물고기로만 이동이 가능. - 물고기 있는 칸으로 이동 : 물고기 먹고, 물고기 방향 GET - 이동할 수 없는 칸 : 물고기가 없는 칸 - 만약 이동할 수 없는 상태이면? 공간에서 벗어나 집으로 간다. 상어가 이동한 후에는 다시 물고기가 이동하며 이 과정이 반복 >> 상어가 먹을 수 있는 물고기 번호의 합의 최댓값을 구하라. DFS와 백트래킹의 차이점 DFS : 모든 경우의 수를 전부 확인하는 알고리즘이다. 백트래킹 : 모든 경우의 수를 확인하지 않는다. 스택에 자식노드를 넣기 전에 유망한지 확인 후 스택에 넣는다. 왜 이 문제가 DFS문제인가? > 모든 노드를 검사해서, 값을 구해야하기 때문이다. 왜 이 ..

[Python] n19237번 | 어른 상어

문제 출처 : www.acmicpc.net/problem/19237 상어 번호 : 1~M이하의 자연수 번호, 랜덤 (단, 모든 번호는 다르다) 가장 강력한 상어 : 1의 번호를 가진 상어 격자 크기 : N X N 상어가 들어있는 칸의 개수 : M 1단계 (이동) - 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. - 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. (냄새는 상어가 K번 이동하고 나면 사라진다) 이동 방향 결정 방법 1순위 ) 인접한 칸 중 아무 냄새가 없는 칸의 방향을 잡는다 2순위 ) 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡는다. (이때 가능한 칸이 여러개 일 수 있는데, 이땐 특정한 우선순위를 따라야 한다...

[Python] n20055번 | 컨베이어 벨트 위의 로봇

컨베이어 벨트 길이 : N 컨베이어 벨트 위아래 총 길이 : 2N 벨트 간격 : 1 벨트 칸 수 : 2N개 반드시 로봇은 올라가는 위치(1)에서만 올라가고, 내려가는 위치(N)에서만 내려갈 수 있다. 내려가는 위치에 있는 로봇의 경우 반드시 땅으로 내려가야 한다. 칸에 올라가거나 이동하면, 그 칸의 내구도는 즉시 1만큼 감소한다. 내구도가 0인 칸에는 로봇 올라갈 수 없다. > 이 글의 목적 : 컨베이어 벨트를 이용해 로봇들을 건너편으로 옮기려고 한다. * 과정 * 1. 벨트가 한 칸 회전한다. 2. 가장 먼저 벨트가 올라간 로봇부터 회전하는 방향으로 이동이 가능하면, 이동한다. 이동할 수 없다면 가만히 있는다. (이동하려면 이동하려는 칸에 로봇이 없어야 하며, 그 칸의 내구도가 1이상 남아있어야 한다)..