프로그래머스/미해결 11

프로그래머스 - 폰켓몬

문제https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=python3 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이nums 배열의 폰켓몬의 종류가 모두 다른 경우는 문제의 최대값으로 N / 2 만큼 뽑을 수 있다.따라서 중복이 있을 경우는 N / 2이나 이보다 작은 값이 정답이 된다.종류를 고를 때는 중복을 제거한 nums에서 고른다. 중복을 제거한 nums의 길이가 N / 2 보다 같거나 크다면 N / 2만큼 중복되지 않은 폰켓몬을 뽑을 수 있으므로 N / 2가 정답이다. ..

프로그래머스 - 양과 늑대

문제https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이루트 노드부터 인접 노드를 통해 갈 수 있는 모든 노드를 탐색한다.여기선 BFS를 사용한다. 인접 노드를 이동하려면 양과 늑대의 수를 비교해야 한다.아래 그림에서 0 -> 1로 바로 갈 순 없다.0->2 방향으로 탐색을 진행한 후 양의 수가 더 많으면 1을 탐색할 수 있는데, 그 전까지 1번은 방문해도 3번과 4번 노드에 대해 BFS 작업을 진행할 수 없다.트리의 노드를 구성할 때 아래와 같..

프로그래머스 - 미로 탈출

문제https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이그래프에서 최소 시간을 찾아야 하므로 BFS를 사용한다.문제 조건 중 L 칸을 꼭 지나가야 하므로 BFS를 2번 진행한다.S - > L, L -> E 이 2번 중에 갈 수 없는 경로가 존재하면 -1을 리턴한다.L 칸에서 BFS를 새로 시작해야 하므로 큐, visit 배열등을 다시 초기화한다.다음 방문 노드를 큐에 집어넣을 때 BFS 진행 횟수(step)를 함께 저장하면 같은 level의 노..

프로그래머스 - 다단계 칫솔 판매

문제https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이딕셔너리로 판매자의 추천자를 저장한다. 이를 통해 추천자를 타고 올라가서 root까지 찾을 수 있다.계산 결과를 저장할 때도 딕셔너리를 사용하면 편하게 저장할 수 있다.딕셔너리에 저장한 계산 결과들은 valuse() 함수를 이용해 구하면 된다.  코드python123456789101112131415def solution(enroll, referral, seller, amount):    an..

프로그래머스 - [3차] 압축

문제https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  풀이길이가 가장 긴 문자열을 찾기 위해 인덱스 두 개를 사용한다.문자열의 시작 인덱스 start_idx와 문자열의 끝 인덱스 end_idx를 이용하고, end_idx의 값을 증가하면서 가장 긴 문자열을 찾는다.msg[start_idx : end_idx]에 해당하는 문자열이 사전에서 못 찾을때까지 end_idx를 증가시키면 가장 긴 문자열을 찾을 수 있다.그러면 사전에서 못 찾은 문자열이 나왔을 ..

프로그래머스 - 의상

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

프로그래머스 - 표 편집

문제 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은 행 번호를 기준으로 위에 있는 행, 아래에 있는 행..

프로그래머스 - 주식가격

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42584?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 인덱스의 차이를 통해 가격이 떨어지지 않는 기간을 구한다. 주식 가격이 떨어지는 인덱스를 기준으로 다른 인덱스와의 길이를 구할 수 있다. 가격이 떨어지는 인덱스보다 이전 인덱스의 가격이 높으면 이전 인덱스의 길이를 확정한다. 스택을 이용해 인덱스를 저장해 길이 비교를 쉽게 한다. 스택에 마지막까지 남아있는 인덱스는 가격이 떨어지지 않는 주식 가격이다. 이 ..