본문 바로가기

분류 전체보기

[programmers] 주식가격 로직 작성 1. 첫번째 값이랑 2, 3, 4, 5번째 값이랑 비교하기! 2. 비교할 때, for i in range(len(price)-1)이여야함 -> why? 마지막 값은 다음값이랑 비교할게 없음 -> 그래서 cnt = [0 for _ in range(len(prices))] 맨 처음부터 0으로 두는 것이다. 코드 def solution(prices): cnt = [0 for _ in range(len(prices))] for i in range(len(prices) - 1): for j in range(i+1, len(prices)): if prices[i] i는 마지막 전값까지, j는 마지막 값까지 가야함 -> j는 i 바로 다음 값부터 시작해야함 더보기
[baekjooon] 5014. 스타트링크 로직 설명 1. 한 단계씩 나아가면서 cnt +=1을 하고, q에 G가 들어있으면 stop ex. 1 - 3 - 2 - 1 - 4 - 5 - 4 - 7 cnt : 1 2 3 코드 import collections F, S, G, U, D = map(int, input().split()) def bfs(): if S > G and D == 0: return "use the stairs" elif S < G and U == 0: return "use the stairs" q = collections.deque([(S, 0)]) visit = [0 for _ in range(F + 1)] visit[S] = 1 while q: x, cnt = q.popleft() if x == G: return cnt if .. 더보기
[baekjoon] 7569. 토마토 코드 import collections M, N, H = map(int, input().split()) board = [[list(map(int, input().split())) for _ in range(N)] for _ in range(H)] near = [(0, -1, 0), (0, 1, 0), (1, 0, 0), (-1, 0, 0), (0, 0, 1), (0, 0, -1)] q = collections.deque() for i in range(H): for j in range(N): for k in range(M): if board[i][j][k] == 1: q.append([i, j, k, 0]) while q: x, y, z, cnt = q.popleft() for a, b, c in near.. 더보기
[baekjoon] 7576. 토마토 코드 import collections N, M = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(M)] near = [(0, -1), (0, 1), (1, 0), (-1, 0)] q = collections.deque() # 그냥 q로하니까 시간초과 떠서 deque로 수정 for i in range(M): for j in range(N): if board[i][j] == 1: q.append((i, j, 0)) board[i][j] = 2 while q: x, y, cnt = q.popleft() for a, b in near: xi, yi = x + a, y + b if 0 q = collection... 더보기
[programmers] 크레인 인형뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 로직 설명 1. board가 가로로 맨 윗줄부터 나와있는것이기 때문에 세로로 돌린다 board = [ [0,0,0,4,3], [0,0,2,2,5]. [0,1,5,4,1], [0,0,0,4,3], [0,3,1,2,1] ] 2. for i in moves: moves 돌면서 해당 board[i-1]중에 0이 아닌 첫번째값이 나오면 result 리스트에 추가하고 0으로 바꿈 - 이때, boar.. 더보기
[baekjoon] 2468. 안전 영역 문제 입력 출력 예제 입력, 예제 출력 노트 로직 1. 안전지역에서의 최대 높이(max_len)를 구한다. 2. 0부터 max_len까지 돌리면서 2-1. 매번 새로운 board를 가지고와서 해야함 -> deepcopy 2-2. for i in range(max_len + 1)이면 l보다 작거나 같으면 0으로 표시 2-3. bfs돌면서 1인 영역 갯수를 찾기 -> 안전영역 갯수(cnt)를 매번 구하면서 mymax에 갱신 코드 import copy N = int(input()) board = [list(map(int, input().split())) for _ in range(N)] temp = 0 for i in range(N): for j in range(N): if temp < board[i][j]:.. 더보기
[baekjoon] 2667. 단지 내 수 세기 문제 입력 예제입력, 예제 출력 로직 1. board에서 1이 나오면 그 주변을 bfs로 1인곳 확인 2. 확인한 곳의 숫자를 0으로 표시해 지나갔음을 표현, cnt += 1하면서 최종 나온 값을 result리스트에 넣어서 오름차순으로 정렬 (오름차순 안해서 틀림!) 코드 N = int(input()) board = [list(map(int, input())) for _ in range(N)] near = [(0, -1), (0, 1), (1, 0), (-1, 0)] result = [] for i in range(N): for j in range(N): if board[i][j] == 1: cnt = 1 q = [[i, j]] board[i][j] = 0 while q: x, y = q.pop(0) f.. 더보기
[programmers] 괄호 변환 문제 설명 매개변수 설명 입출력 예 로직설명 1. 균형잡힌 괄호문자열, 올바른 괄호 문자열 확인하는 함수를 만들고 2. 1~4번까지 구현하기.. (다른 사람들은 차례대로 구현하면 되는 문제라 어렵지 않다고 하셨는데 난 어려웠다,,,) 코드 # 균형잡힌 괄호 문자열 def balance(p): cnt = 0 for i in p: if i == '(': cnt += 1 else: cnt -= 1 if cnt == 0: return True return False # 올바른 괄호문자열 def correct(p): left = 0 right = 0 for i in p: if i == '(': left += 1 else: right += 1 if right > left: return False if right =.. 더보기