목록Programmers/Level 3 (26)
GitHubSeob

문제 https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 처음에 2차원, DFS를 이용해 문제를 풀었는데 테스트 케이스 하나가 계속 통과가 안 됐다. 질문글을 보니 방향 순서를 바꾸면 된다 해서 바꾸고 돌렸더니 이번엔 다른 테스트 케이스가 통과가 안 됐다. 그래서 다른 질문글을 보고 다른 풀이를 참고하여 3차원, DFS를 이용해 문제를 풀었다. 3차원이 되면서 추가되는 점은 다음으로 넘어갈 때 방향을 추가로 고려한다는 점이다. 알고리즘은 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 DFS로 풀었다. DFS는 시작 나라, 여행 횟수, 여행경로를 인자로 받았다. visited 벡터를 이용해 재방문을 못하게 했다. 반복문을 탐색하면서 출발지점이 "ICN"이라면 방문 표시를 하고, 여행경로에 string형으로 입력한다. DFS함수에서는 티켓 크기만큼 반복하면서 티켓을 탐색한다. 방문을 안 했고, 현재 나라가 출발 지점이 아닌 티켓들은 continue를 통해 넘긴다. ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 문제를 보자마자 두 가지 방법이 생각났다. 하나는 BFS를 이용한 풀이고, 다른 하나는 다익스트라 알고리즘을 이용한 풀이이다. 이번 풀이에서는 다익스트라 알고리즘을 사용했다. 문제를 보면 1번 노드에서 가장 먼 노드를 구해야 한다. 간선은 양방향 간선이므로 주어진 배열을 가지고 따로 (n+1) * (n+1)크기의 벡터를 만들어 연결이 되면 1을 저장한다. (1번 노드부터 시작하므로 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 돌이 연속으로 k개가 무너지는 때를 구하는 문제이다. 다른 곳에서 돌이 몇 개가 무너지든 상관이 없다, 오직 k개가 연속으로 무너지는 돌을 구하면 된다. 따라서 구간을 구해서 탐색을 하면 된다. k개가 무너져야 하므로 시작과 끝 안에 있는 돌들은 k개가 된다. 원하는 돌을 없앨 수 있고, 순서대로 정렬을 할 수 있는 multiset을 이용한다. multiset에 k개의 돌을 집어넣고..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 연속으로 고르지 못하고 하나를 고르면 그 양 옆은 고를 수 없는 문제라 DP를 이용해 풀었다. 원형이기 때문에 2가지 경우로 나누어 문제를 풀었다. 첫 번째, 1차원 벡터로 봤을 때, 맨 앞을 선택할 때. 두 번째, 맨 앞을 선택하지 않을 때. sticker.insert(sticker.begin(), 0); sticker.insert(sticker.begin(), 0); sticke..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 어느정도 틀은 잡았는데 구현하는 부분에서 고생을 했다. 반복문을 통해 보석들의 배열을 탐색하면서, map을 이용해 기존 보석의 위치를 지우고 새 보석의 위치를 저장하고, 가진 보석들 중 가장 작은 인덱스가 시작부분으로 두고, 새 보석을 찾을 때마다 해당 위치를 끝 부분으로 뒀다. 가장 작은 인덱스를 찾으려고 벡터를 이용해 map의 value를 기준으로 정렬을 해봤는데 잘 안됐다.. ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 모든 경우의 수를 탐색해 문제를 풀었다. 밴을 당한 아이디 기준으로 유저 아이디와 크기가 같은지, '*'을 제외하고 모두 같은지를 판별한다. 삼중 반복문이 끝났으면 밴을 당한 아이디를 모두 찾았을 것이다. 이제 그 아이디를 가지고 조합을 짜야한다. 조합을 짤 때 순서와 관계없이 아이디 목록의 내용이 동일하다면 같은 것으로 처리한다. 그리고 제제 목록에 같은 아이디가 여러 개 중복될 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 맵과 우선순위 큐를 이용해서 풀었다. 맵 안에 우선순위 큐가 들어가 복잡해 보일 수 있지만, 풀이는 간단하다. map를 선언해서 장르별로 총 재생된 횟수를 기록한다. (string = 장르, int = 재생된 횟수) map를 선언했는데, 우선순위 큐는 pair 형태로 되어있다. {재생된 횟수, 곡 번호} struct compare { bool operator()(pair& song1..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 모든 아파트에 전파를 전달하기 위해, 이미 설치된 기지국을 제외하고 최소 몇 개를 설치해야 되는지 구하는 문제이다. 제한사항을 보면 기지국의 위치를 알려주는 벡터인 stations는 오름차순으로 정렬되어 있다고 되어있다. 따라서 정렬할 필요 없이 1부터 n까지 돌면서 기지국을 설치하면 된다. 1부터 탐색하면서 이미 설치된 기지국 전파에 닿는지를 확인한다. 닿지 않는다면 효율적인 설치..