반응형

코딩테스트 17

[프로그래머스] 같은 숫자는 싫어 - 파이썬 / insert 메소드 시간복잡도

문제 설명 배열 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보다 크거나 ..

코딩테스트 2025.05.15

[프로그래머스] 완주하지 못한 선수 - 파이썬 / Counter

Counter는 내장 라이브러리인 collections에 있는 클래스로,dictionary를 상속받아서 데이터가 딕셔너리처럼 생겼다.Counter는 리스트 안의 원소들의 빈도를 세어서 dictionary 형태로 저장한다. from collections import Counterdef solution(participant, completion): p_count = Counter(participant) c_count = Counter(completion) diff = p_count - c_count return list(diff.keys())[0]Counter는 오버로딩으로 뺄셈 연산을 할 수 있다. 아무래도 빈도를 구하다보니 원소의 빈도끼리 연산을 하면 원소에 연산된 빈도가 반..

코딩테스트 2025.05.07

[프로그래머스] 교점에 별 만들기 - 파이썬

문제 분해1. 두 직선의 교점 구하기. 근데 x, y가 둘 다 정수인! => itertools의 combination으로 직선의 조합을 구하자.2. 별을 찍어줄 수 있는 최대 범위 구하기. 그러기 위해선 x 좌표값 중 최대 최소, y 좌표값 중 최대 최소를 구해야됨. (상자를 그리기 위한 좌우, 상하를 구한다고 생각하면 된다.)3. .(점) 으로 2차원 배열 초기화. x와 y의 최대 최소를 사용해서 초기화해야됨.4. 교점에 속한 인덱스를 *(별)로 업데이트. 수학의 평행이동 개념을 사용한다. 배열에 접근하는 거니 좌표가 아닌 인덱스로 접근해야됨을 헷갈리지 말기.5. row별로 join해서 return하기~ 코드주석으로 설명을 작성해 놓았다. from itertools import combinationsd..

코딩테스트 2025.04.26

[백준] 1158 요세푸스 문제 - 파이썬

문제요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)출력예제와 같이 요세푸스 순열을 출력한다. 첫 코드# 리스트로 구현할 수 있는데 꼭 deque로 구현할 필요가 있을까..

코딩테스트 2025.04.25

[백준] 10828 스택 - 파이썬

문제정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.명령은 총 다섯 가지이다.push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.입력첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다...

코딩테스트 2025.04.25
반응형