본문 바로가기

ALGORITHM_PRACTICE

(44)
[프로그래머스] 입국심사 [프로그래머스] 입국심사 코딩테스트 연습 - 입국심사 | 프로그래머스 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사를 받을 수도 있습니다. 모든 사람이 심사를 받는데 걸리는 시간을 최소로 하고 싶습니다. 입국심사 programmers.co.kr 이분탐색으로 분류되어 있는 문제다. 핵심은 이분탐색을 하는데, 입국 심사관이 검사할 수 있는 사람들 수를 맞추면서 가장 최소가 되는 시간을 구하면되는 ..
[프로그래머스] 숫자 야구 숫자 야구 코딩테스트 연습 - 숫자 야구 | 프로그래머스 [[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] 2 programmers.co.kr 중, 고등학교 때 수업시간, 자습시간에 했던, 군복무할 때 할게 없어서 하던 그 숫자 야구게임. 완전 탐색 문제이기 때문에 모든 3자리 숫자에 대해서 스트라이크, 볼 검증을 하면 된다. 정답이 123이면 baseball 벡터의 숫자와 비교하면서 스트라이크 개수, 볼의 개수가 모두 같으면 정답이 가능한 숫자로 answer를 카운트하면 된다. 다만 문제에 조건들을 자세히 읽어보지 않으면 아마 채점 결과가 계속 50 ~ 60일 것이다. 문제에서 숫자는 3자리 숫자라고 하지만 문제 설명을 다시 자세히 읽어보면 각자 서로 다른 ..
[프로그래머스] 여행경로 [프로그래머스] 여행경로 코딩테스트 연습 - 여행경로 | 프로그래머스 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 티켓을 가지고 모든 공항을 순회하여야 하고 여러곳을 갈 수 있을경우 알파벳순으로 방문한다. 그리고 모두 방문하지 못하는 경우는 없다. 나는 key - value를 이용할 수 있는 map을 이용하여 티켓별로 갈 수 있는 곳을 지정하였고 value는 리스트로 가지고있어야하니 vector값을 키의 value로 했다 vector는 공항 이름과 방문 여부를 가진 구조체의 벡터로 설정하였다.. 그리고 그 value들을 알파벳 순으로 정렬한 뒤 dfs 탐색..
[프로그래머스] 가장 큰 수 https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 | 프로그래머스 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. programmers.co.kr 알고보면 엄청나게 간단한 문제이지만 방법을 생각해내지 못했을 때 30,..
백준 13171번: A 백준 13171번: A 13171번: A 음이 아닌 두 정수 A, X 가 있을 때 AX을 구하는 방법을 생각해보자. 물론 이 수는 매우 클 수 있기에, 1,000,000,007 (= 109 + 7)로 나눈 나머지를 구할 것이다. a mod x를 a를 x로 나눴을 때의 나머지라고 표현하면, (a × b) mod x = {(a mod x) × (b mod x)} mod x 가 성립하기 때문에, 어떤 두 정수를 1,000,000,007로 나눈 나머지만 알고 있어도 그 두 정수의 곱을 1,000,000 www.acmicpc.net 못풀어서 다른 사람들 블로그를 참조했다. 생각보다 엄청나게 간단한 코드였다. 이해안되는 부분이 있었는데 문제에서 잘 설명해주어서 알았다(...) 어떤 수를 x로 나눈 나머지는 더 작은..
백준 11066번: 파일 합치기 백준 11066번: 파일 합치기 11066번: 파일 합치기 문제 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본이 들어있는 한 개의 파일을 만든다. 이 과정에서 두 개의 파일을 합쳐서 하나의 임시파일을 만들고, 이 임시파일이나 원래의 파일을 계속 두 개씩 합쳐서 소설의 여러 장들이 연속이 되도록 파일을 합쳐나가고, 최종적으로는 하나의 파일로 합친다. 두 개의 파일을 www.acmicpc.net DP문제지만 정말 어려웠다. 문제를 오해하면 안되는게 소설이다보니까 페이지가 섞이면 안된다. 이거 모르면 평생 못풀 문제다. 그리고 각 파일을 합치는 과정을 구하기가..
백준 2565번: 전깃줄 백준 2565번: 전깃줄 2565번: 전깃줄 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결되는 위치의 번호가 차례로 주어진다. 위치의 번호는 500 이하의 자연수이고, 같은 위치에 두 개 이상의 전깃줄이 연결될 수 없다. www.acmicpc.net 나는 풀이가 고민도 안될정도로 아무것도 떠오르지 않을때는 바로 답지를 보는편이다. 처음에 생각해 본것은 전깃줄을 없애는 방법과 없애고나서 그것을 어떻게 이용하여 최솟값을 찾는지에 대한 고민을 해봤지만 아무것도 생각나지 않았다. LIS문제라는 힌트를 얻어도 어떻게해야할지 모르겠다. 그래서 결국엔 답을 봤다. 전깃줄을 없애..
[프로그래머스] 베스트앨범 베스트앨범 문제 주소 코딩테스트 연습 - 베스트앨범 | 프로그래머스 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 play programmers.co.kr 시간을 꽤 오래들여서 해결한 문제이다. 문제의 조건이 매우 까다로워서 고려해야하는 것이 많다보니 작은 실수에도 원하는 답이 나오지않게된다. 조건을 살펴보..