전체 글 180

프로그래머스 - 의상

문제https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이옷의 갯수를 종류별로 합산한다.옷의 각 종류별로 옷을 입을 수 있는 경우의 수를 구한다.경우의 수는 다음과 같다.종류별로 안에 있는 1개만 정해서 입는다. 이는 옷의 종류 갯수와 같다.또는 카테고리 안에 있는 옷을 아예 입지 않는다.따라서 특정 종류 안에 있는 옷의 수가 n 이라면 경우의 수는 n + 1이다. 여러 종류에서 나오는 경우의 수를 곱하면 모든 종류에 대해서 경우의 수가 나온다.마..

프로그래머스 - 메뉴 리뉴얼

문제https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이orders에 있는 order마다 2개, 3개, 4개...씩 course 리스트에 있는 갯수만큼 조합을 만들고 course 갯수에 맞는 특정 조합의 갯수가 많은걸 찾아야 한다. orders의 order 마다 course 갯수만큼 조합을 찾기 위해 combinations 함수를 사용한다. 특정 조합이 만들어지는 횟수를 구하기 위해 Counter 객체를 이용한다.Counter를 통해 다음과 같이..

프로그래머스 - 신고 결과 받기

문제https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이신고를 받은 횟수와 신고를 한 id를 함께 저장하기 위해 다음 형태로 딕셔너리를 만든다.{"신고 당한 id": ["신고한 id1", "신고한 id2"]}신고 당한 id 키에 해당하는 값 리스트의 길이가 k 보다 크면 이용 정지가 된다.그러면 리스트에 있는 신고한 id 마다 메일 받는 횟수를 1 증가시킨다.  코드python1234567891011121314151617181920def solu..

프로그래머스 2024.02.10

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

문제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

BOJ 1158 - 요세푸스 문제

문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 풀이 큐를 이용해 문제를 해결할 수 있다. 큐에서 k - 1 번 데이터를 front에서 pop하고 rear에 넣어준다. 이것이 원을 이루면서 앉아있는 것과 같아진다. 그 다음 k 번째에 데이터를 pop한다. 이를 q가 빌 때까지 반복하고 pop한 숫자들을 차례대로 저장해 출력한다. 코드 python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from collections import deque def solution(n, k): answer = [] q = de..

BOJ 2024.01.28