programmers 285

[Programmers 코딩테스트 고득점 Kit] 순위

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr BFS를 이용하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. results 벡터를 순회하면서 각 선수를 이긴 선수들을 저장하는 벡터 winners와 각 선수한테 진 선수들을 저장하는 벡터 losers를 정의해줍니다. 2. 각 선수들에 대해 BFS를 진행해주면서 (그 선수를 이긴 선수들의 합) + (그 선수한테 진 선수들의 합) = n - 1이라면 순위가 정해진 것입니다. 3. 2번을 통해 구한 순위가 정해진 선수들의 수를 반환해줍니다. 개발환경:..

[Programmers 코딩테스트 고득점 Kit] 방의 개수

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/49190 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr arrows 벡터 크기가 최대 100,000이므로 이차원 배열 대신 map을 사용해야하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 정점과 간선을 나타내는 구조체를 정의하고 해당 구조체에 대한 visited map을 선언해줍니다. 2. arrows 벡터를 순회하면서 정점과 간선들을 방문했다고 표시해줍니다. 2.1 해당 정점은 이미 방문했지만 아직 해당 간선을 방문하지 않은 상태라면 사이클을 형성한 것이므로 방 개수..

[Programmers 코딩테스트 고득점 Kit] 가장 먼 노드

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr BFS를 이용하여 푸는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 양방향 그래프를 입력받습니다. 2. 1번 노드로부터 BFS를 진행하는데 2.1 제일 먼 거리가 갱신될 경우 기존에 제일 멀었던 노드들이 속해있는 벡터를 지우고 다시 해당 노드를 벡터에 추가해주고 2.2 현재 노드로부터 1번 노드까지의 거리가 제일 먼 거리와 동일할 경우 벡터에 해당 노드를 추가해줍니다. 3. 노드의 개수를 구해야 하므로 벡터의 ..

[Programmers 코딩테스트 고득점 Kit] 베스트앨범

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 해쉬와 정렬을 이용하여 푸는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 각 genre마다 고유의 번호를 부여하고 각 장르를 인덱스로 하는 벡터에 노래를 추가해줍니다. 2. 1번에서 구한 벡터를 토대로 각 genre마다 재생된 노래의 총합을 구해줍니다. 3. 문제에서 주어진 조건대로 genre를 정렬하고 3.1 정렬된 순서로 각 genre..

[Programmers 코딩테스트 고득점 Kit] 위장

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 해쉬와 조합을 이용하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. map을 이용하여 의상 타입을 int로 변환하고 각 의상 타입이 몇 개씩 있는지 파악합니다. 2. 결과를 구하기 위해서는 조합 공식을 써야하는데 해당 공식은 (의상 타입1 + 1) * (의상 타입 2 + 1) *... * (의상 타입 N + 1) - 1입니다. 3. 위 조합 공식을 이용해 답을 구하고 반환해줍니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 전화번호 목록

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr N이 1,000,000이지만 전화번호 길이가 최대 20이기 때문에 O(N * 20)으로 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. phone_book 벡터 내 전화번호들을 set에 넣어주고, 각 전화번호와 인덱스를 매핑해줄 map을 정의해줍니다. 2. phone_book 벡터 내 전화번호들을 순회하며 각 전화번호의 길이를 ..

[Programmers 코딩테스트 고득점 Kit] 완주하지 못한 선수

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 예제에서도 나와있듯이 같은 이름의 선수가 있다는 점을 주의해야 하는 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 주식가격

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 벡터 크기가 최대 100,000이기 때문에 단순 O(N^2)으로는 풀 수 없는 문제였습니다. 알고리즘은 아래와 같습니다. 1. prices 벡터를 순회하며 주식 가격과 인덱스를 큐에 넣어줍니다. 2. 큐에 넣어주기 전에 기존 큐에 들어가 있는 주식 가격들과 현재 보고 있는 주식 가격을 비교한 뒤 현재 주..

[Programmers 코딩테스트 고득점 Kit] 다리를 지나는 트럭

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr deque을 이용하면 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 코딩테스트 고득점 Kit] 프린터

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 큐를 적절히 이용하면 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~