문제https://school.programmers.co.kr/learn/courses/30/lessons/178870시행착오맨 처음에 이중 for문을 사용해서 완전 탐색으로 찾으려고 했다. sequence[0]부터 끝까지 탐색, 다시 sequence[1]부터 끝까지 탐색.. 이렇게 하려고 했다.그러면 시간초과 (sequence최대 배열 길이가 100만이니까 이중 for문을 쓰면 10억을 훨씬 넘어간다. 이코테에서 연산 횟수가 10억을 넘어가면 c언어를 기준으로 1초를 넘어가니까 파이썬은 더 오래걸리겠지..? 그래서 문제에 나와있는 '비내림차순' 이라는 조건을 활용해서 O(n)으로 풀어보자했다. 근데 전혀 방법이 생각이 나질 않아서 프로그래머스에 질문목록을 참고했고 아래 코드를 보았다def solut..
전체 글
시행착오기둥과 보를 설치하거나 삭제할 경우 is_possible(x, y, a, answer)를 이용해서 answer에 x, y 좌표에 a(기둥/보)를 설치할 수 있냐 없냐를 반환하려고 했다. 1. 설치할 경우 answer.append(x,y,a)로 설치한 후 , is_possible(x, y, a, answer) 실행하고 함수가 false를 반환하면 answer.remove(x,y,a)해서 설치한거 제거 2. 삭제할 경우 answer.remove(x,y,a)로 제거한후, is_possible(x, y, a, answer) 실행하고 함수가 false를 반환하면 answer.remove(x,y,a)해서 설치한거 제거 근데 is_possible에 x,y,a를 넘겨줘서 그걸 기준으로 설치할 수 있느냐..
구현 중 고민되었던 부분첫번째뱀의 이동 방향에 따라 왼쪽, 오른쪽 회전 방향이 달라지는데 그걸 어떻게 구현해야하나나 같은 경우 딕셔너리를 사용해서 하나씩 다 정의해 주었다.dic = {"상":{"L":"좌", "D":"우"}, "하":{"L":"우", "D":"좌"}, "좌":{"L":"하", "D":"상"},"우":{"L":"상", "D":"하"}} 두번째뱀이 머리를 옮기고 꼬리를 이동하는 중에 중간에 몸통은 어떻게 옮겨야하나 이 부분에서 막혀서 문제를 풀지 못했다 고민 해결책이코테 책을 보고 해결하였다.첫번째처음에 오른쪽을 보고 있다고 문제에서 주어졌다.#시계 방향, 반시계방향으로 돌아가게 하기 위한 세팅(처음에 오른쪽을 보고 있으므로 동,남,서,북으로 초기화)dx = [0, 1, 0, -..
문제 원인yml파일을 git에서 추적하지 않기 위해 .gitignore에 적용했지만 계속 추적하는 원인이 git 캐시라고 한다.해결 방법git 캐시를 지워주면 된다.`git rm -r --cached .` 하면 모든 파일의 캐시가 지워지고 다시 모든 파일을 커밋할 수도 있지만`git rm -r --cached {yml파일 경로}` 이렇게하면 yml 파일만 캐시에서 삭제할 수 있고 모든 파일을 다시 커밋하지 않아도 된다. 1. `git rm -r --cached {yml파일 경로}`2. `git add {yml파일경로}`3. `git commit -m "Delete git cached"`위 과정을 거치면 yml파일을 git 추적에서 제외할 수 있다.
이코테에서 효율적인 화폐 구성 문제와 비슷해서 비슷한 풀이로 풀 수 있었다.첫번째 코드n = int(input())#설탕이 최대 5000이므로 data = [5001] * (n+1)bag = [3, 5]for i in bag: if i > n: continue data[i] = 1#배열 n에...3키로,, 5키로for k in bag: for i in range(k, n+1): if data[i-k] != 5001: #가방 단위로 배달 가능하면... data[i] = min(data[i], data[i-k]+1)if data[n] != 5001: print(data[n])else: print(-1) 이전에 이 문제를 푼 코드가 있어서 확인해 봤더니 이전에 푼 코드가 더 빠르고..

만약 아래와 같이 주어졌다고 하면BFS탐색하면서 주변에 1로 된 노드를 탐색하면서 이전 노드의 최소 방문 횟수에 + 1을 해주면서 방문처리를 해주면 아래와 같다. 결국 마지막 노드에 있는 수를 출력해주면 동빈이가 방문하는 최소 노드 개수를 구할 수 있다.작성 코드from collections import deque#풀이시간: 28m 40s# 소스코드 날라가서 두번 풂..#이전 노드를 중심으로 상하좌우 bfs탐색 -> 이전 노드에는 해당 노드를 방문하기 위한 최소 노드 개수가 적혀져 있으므로 상하좌우 탐색하면서 이전 노드에 적힌 수 + 1을 하면 다음 노드로 가기 위한 최소 노드 개수를 구할 수 있음n, m = map(int, input().split())map = list(list(map(int, in..
이 문제는 이코테 책에서 DFS/BFS 파트의 문제인데 조합으로도 풀이가 가능해서 `itertools` 라이브러리의 `permutations`클래스를 사용해서 풀었다. 하지만 Python3로 제출했지만 시간초과 발생from itertools import permutationsn = int(input())lst = list(map(int,input().split()))op_cnt = list(map(int,input().split()))op = ['+', '-', '*', '%']op_idx = []for cnt, op_symbol in zip(op_cnt, op): for i in range(cnt): op_idx.append(op_symbol)op = list(permutations(op_idx..
리스트를 사용한 큐 보통 파이썬에서는 deque를 사용해서 큐를 구현한다리스트 내장 함수를 사용해서 큐 기능을 구현할 수도 있다.q = []q.append(1)q.pop(0)`append()`: 리스트 뒤쪽에 요소 넣기`pop(0)`: 리스트 맨 앞 요소 꺼내기 하지만 append나 pop은 일반적으로 '가장 뒤쪽의 원소'를 기준으로 수행한다.따라서 앞쪽에 있는 원소를 처리할 때에는 리스트에 포함된 데이터의 개수에 따라 많은 시간이 소요될 수도 있다는 점을 기억하자.deque를 사용한 큐 데이터의 시작 부분이나 끝 부분에 데이터를 삽입하거나 삭제할 때 매우 효과적으로 사용될 수 있다.시간복잡도가 O(1)이다.from collections import dequedata = deque([2,3,4])data..

이코테 책을 기반으로 작성된 글입니다. 카카오.... 나한텐 너무 먼 카카오... 코테 문제부터 심상치 않아... 도저히 모르겠어서 그냥 바로 해설보고 풀었다. 해설에서 알아두면 좋은 코드만 작성해보기로 했다 2차원 리스트 90도 회전#열쇠를 90도 회전하는 경우def rotate_a_matrix_by_90_degree(key): n = len(key) result = [[0]*n for _ in range(n)] for i in range(n): for k in range(n): result[k][n-i-1] = key[i][k] return result 3X3인 열쇠임을 가정해보자.key[0][0] -> result[0][2]key[0][1] -> result[1][2]key[..