프로그래머스 50

프로그래머스 - 베스트앨범

문제https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이장르별로 총 재생횟수를 구하고 내림차순한다.장르명을 키로하고 총 재생횟수를 값으로 가지는 딕셔너리를 이용한다.장르별 곡들을 정렬하기 위해서 장르명을 키로하고 (곡 id, 재생 횟수) 튜플 배열을 값으로 가지는 딕셔너리를 이용한다.이를 통해 장르별 곡들도 재생 횟수로 내림차순 정렬이 가능하다.정렬 후 각 장르별로 재생 횟수가 높은 2곡을 뽑는다.  코드python12345678910111213..

프로그래머스 - 할인 행사

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 원하는 제품의 dictionary를 만들고 10일간 할인하는 제품의 dictionary를 만들어서 두 dictionary를 비교해 답을 구한다. dictionary는 {제품 명: 제품 갯수}로 한다. 날이 바뀌면 10일간 할인하는 제품의 dictionary 내부 값을 바꿔야 한다. 둘째 날이 되면 discount[0]에 해당하는 키에 값을 -1 해주고, discount[10]에 해당하..

프로그래머스 2024.02.06

프로그래머스 - 완주하지 못한 선수

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해쉬를 이용해 완주하지 못한 선수를 찾는다. 동명이인을 처리하기 위해 선수 이름을 key로 같은 이름 갯수를 value로 하고 같은 key 면 value + 1을 해준다. completion에 있는 선수 이름을 키로 찾은 value 값을 1씩 빼주면 완주한 경우 value는 0이 된다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def sol..

프로그래머스 2024.02.02

프로그래머스 - 다리를 지나는 트럭

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 마지막 트럭이 다리를 오르는 시간을 알면 총 시간을 알 수 있다. 마지막 트럭이 오른 시간 + 다리의 길이를 하면 모든 트럭이 다리를 지나간 시간이다. 다리에 올라온 트럭이 다리를 건너는 시간을 구하기 위해 bridge_sec 큐를 따로 사용한다. bridge_sec에는 트럭이 다리에 진입한 시간을 저장한다. 다리를 건너는 데는 bridge_length 만큼 시간이 걸리므로 다음 코드는..

프로그래머스 2024.02.02

프로그래머스 - 카드 뭉치

문제 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 카드를 리스트 앞에서부터 순서대로 써야 하고, 순서도 바꿀 수 없고, 사용하지 않고 넘어갈 수 없으므로 큐를 이용해 문제를 해결한다. 다음 순서대로 문제를 해결하면 된다. 1. goal에서 단어를 하나 꺼내서 cards1, cards2에 front와 비교한다 2. cards1, cards2에 일치하는 단어가 있다면 pop 한다. 3. cards1, cards2에 일치하는 단어가 없으면..

프로그래머스 2024.01.31

프로그래머스 - 기능개발

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 기능 개발이 먼저 되어도 앞에 있는 기능과 함께 배포가 되야 하므로 큐를 사용한다. progress마다 남은 작업 진도를 구한다.이는 100 - progress로 구하면 된다. 그러면 progresses [93, 30, 55]는 [7, 70, 45]로 바뀐다. 이를 작업속도로 나누면 남은 작업일을 구할 수 있다. 작업 속도는 [1, 30, 5]이므로 이걸 이용해 작업일을 구하면 다음과 ..

프로그래머스 2024.01.30

프로그래머스 - 컨트롤 제트

문제 https://school.programmers.co.kr/learn/courses/30/lessons/120853 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 문자열 s에 있는 숫자들을 관리한다. 문자열 s에 있는 숫자들을 차례대로 스택에 넣는다. 숫자가 아닌 Z 차례일 경우 스택에서 숫자를 pop 하면 바로 전에 더했던 숫자를 빼는 것과 같다. 마지막까지 스택에 남아있는 숫자들을 더하면 답이 된다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 def solution(s): stack = [] for n in ..

프로그래머스 2024.01.26

프로그래머스 - 올바른 괄호

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 괄호 짝을 맞춘다. ( 차례면 스택에 넣고 ) 차례에 (을 빼면 괄호 짝을 맞춘거다. 올바른 괄호만 입력으로 주어지면 스택에는 괄호가 남아있지 않는다. 만약 ) 차례에 스택에서 꺼낼 ( 괄호가 없거나, 마지막 입력까지 주어진 후 스택에 괄호가 남아있다면 올바른 괄호 s가 아닌거다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def s..

프로그래머스 2024.01.25

프로그래머스 - 같은 숫자는 싫어

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 스택을 이용해 연속되는 숫자를 관리한다. arr의 숫자를 스택에 저장할 때 스택의 top에 있는 숫자와 지금 저장할 숫자가 같은지 확인한다. 코드 python 1 2 3 4 5 6 7 8 def solution(arr): answer = [] for n in arr: if not (answer and n == answer[-1]): answer.append(n) return answer..

프로그래머스 2024.01.24

프로그래머스 - 표 편집

문제 https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 cmd가 모두 수행된 후 처음과 비교해서 각 행이 삭제됐는지 알아내야 한다. 그 후 삭제된 행만 X로 바꾸면 된다. 실제 배열을 선언하고 삽입, 삭제 연산을 하는 대신 인덱스만으로 연산을 진행한다. 각 행마다 위와 아래에 위치한 행과의 차이를 나타낼 수 있다. 행 번호 up down 0 1 1 0 2 2 1 3 3 2 up, down은 행 번호를 기준으로 위에 있는 행, 아래에 있는 행..