본문 바로가기

코딩테스트

(28)
[백준] [python] 3190 뱀 https://www.acmicpc.net/problem/3190문제'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다.게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다.뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다.먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다.만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다.만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다...
[프로그래머스] [python] 스택/큐 - 기능개발 문제 설명프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.제한 사항작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수입니다.배..
[프로그래머스] [Python] 스택/큐 - 같은 숫자는 싫어 문제 설명배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return하는 solution 함수를 작성해 주세요.제한 사항배열 arr의 크기 : 1,000,000 이하의 자연수배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 ..
[프로그래머스] [2024 카카오 기출] 도넛과 막대 그래프 https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 풀이이 문제는 각 노드와 각 그래프의 특징을 빠르게 파악해서 그래프를 찾는 것이 중요하다.'생성된 정점'은 나가는 간선의 수가 2 이상이고, 들어오는 간선의 수가 0이다.'막대 모양 그래프'의 수는 나가는 간선의 수가 0, 들어오는 간선의 수가 1인 노드의 개수와 같다.'8자 모양 그래프'의 수는 나가는 간선의 수가 2, 들어오는 간선의 수도 2인 노드의 개수와 같다.'도넛 모양 그래프'는 '생성된 정점'의 나가는 간선의 수에서 막대 모양..
[프로그래머스] [python] 과제 진행하기 문제 설명과제 진행하는 계획과제는 시작하기로 한 시각이 되면 시작새로운 과제를 시작할 시간이 되었을 때, 기존에 진행 중이던 과제가 있다면 진행 중이던 과제를 멈추고 새로운 과제를 시작진행중이던 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춘 과제를 이어서 진행한다.만약 과제를 끝낸 시각에 새로 시작해야 되는 과제와 잠시 멈춰둔 과제가 모두 있다면, 새로 시작해야 하는 과제부터 진행멈춰둔 과제가 여러 개일 경우, 가장 최근에 멈춘 과제부터 시작문제 풀이 이 문제를 보고 가장 먼저 든 생각은 스택, 그리고 막대 길이 문제였다. 말로 설명하기 어렵지만 뭔가 이 문제를 막대길이 땅따먹기 ? 하는 방식으로 풀면 되겠다는 생각이 들었다.스택은 멈춰둔 과제가 여러 개일 경우, 가장 최근에 멈춘 과제부터 시작해야..
[프로그래머스] [python] 크기가 작은 부분 문자열 문제 설명문제 풀이단순하게 처음부터 문자열 길이만큼 잘라가며 비교했다.def solution(t, p): answer = 0 p_len = len(p) t_len = len(t) p_int = int(p) for i in range(t_len - p_len + 1): num = t[i:i+p_len] if int(num) int()python에서 str를 int로 변환하고 싶을 때 사용하면 되는 메소드이다. 기억하자.
[프로그래머스] [python] 연속된 부분 수열의 합 : 투 포인터 알고리즘 기존 코드코드 실행은 성공했지만 시간 초과로 실패한 코드이다. 나름 python 리스트 filter와 리스트 comprehension을 이용하여 조건을 잘 필터링 했다고 생각했지만, 이중 반복문을 사용하여 시간 초과가 걸렸다.def solution(sequence, k): answer = [] n = len(sequence) smallest = n-1 for i in range(n): sum = 0 j = i while sum투 포인터(Two pointer) 알고리즘투 포인터는 데이터에 순차적으로 접근해야 할 때 두 개의 점 위치를 조절하여 조건에 부합하는지 판단하는 알고리즘이다. 공통 부분을 제외하고 포인터로 이동하는 원소의 처리만 하면 되므로..
[프로그래머스] [python] 대충 만든 자판 처음 시도한 코드def solution(keymap, targets): l = len(keymap) answer = [] for i in range(l): count = 0 for t in targets[i]: n = -1 for k in keymap: if t in k: temp = k.index(t) + 1 if n==-1: n = temp elif n>0 and n > temp: n = temp ..