문제 풀이
-
[프로그래머스] 선입 선출 스케줄링문제 풀이 2020. 6. 5. 18:09
문제 설명처리해야 할 동일한 작업이 n 개가 있고, 이를 처리하기 위한 CPU가 있습니다.이 CPU는 다음과 같은 특징이 있습니다.CPU에는 여러 개의 코어가 있고, 코어별로 한 작업을 처리하는 시간이 다릅니다.한 코어에서 작업이 끝나면 작업이 없는 코어가 바로 다음 작업을 수행합니다.2개 이상의 코어가 남을 경우 앞의 코어부터 작업을 처리 합니다.처리해야 될 작업의 개수 n과, 각 코어의 처리시간이 담긴 배열 cores 가 매개변수로 주어질 때, 마지막 작업을 처리하는 코어의 번호를 return 하는 solution 함수를 완성해주세요.제한 사항코어의 수는 10,000 이하 2이상 입니다.코어당 작업을 처리하는 시간은 10,000이하 입니다.처리해야 하는 일의 개수는 50,000개를 넘기지 않습니다.입..
-
[프로그래머스] 지형이동문제 풀이 2020. 6. 5. 16:01
문제 설명N x N 크기인 정사각 격자 형태의 지형이 있습니다. 각 격자 칸은 1 x 1 크기이며, 숫자가 하나씩 적혀있습니다. 격자 칸에 적힌 숫자는 그 칸의 높이를 나타냅니다.이 지형의 아무 칸에서나 출발해 모든 칸을 방문하는 탐험을 떠나려 합니다. 칸을 이동할 때는 상, 하, 좌, 우로 한 칸씩 이동할 수 있는데, 현재 칸과 이동하려는 칸의 높이 차가 height 이하여야 합니다. 높이 차가 height 보다 많이 나는 경우에는 사다리를 설치해서 이동할 수 있습니다. 이때, 사다리를 설치하는데 두 격자 칸의 높이차만큼 비용이 듭니다. 따라서, 최대한 적은 비용이 들도록 사다리를 설치해서 모든 칸으로 이동 가능하도록 해야 합니다. 설치할 수 있는 사다리 개수에 제한은 없으며, 설치한 사다리는 철거하지..
-
[프로그래머스] 파일명정렬문제 풀이 2020. 6. 4. 16:53
풀이)파일에 관한 정보를 저장하는 구조체를 하나 선언하여 푼 문제이다. 만든 구조체는 이러하다.struct F_info{string head, tail; //head명과 tail명을 저장하는 변수int number; // number을 저장하는 변수int index; // 파일이 입력된 순서 = 파일인덱스를 저장하는 변수} 풀이과정을 간단히 말해보자면1. 파일을 head, number, tail 로 나눈 정보를 구조체로 만들고, 구조체 배열에 저장한다.2. 구조체 배열을 sort 함수를 통해 정렬한다. (head부분먼저확인 -> number확인 ->입력순서확인)3. 정렬된 구조체의 첫번째부터 마지막까지 구조체의 파일인덱스를 확인해 answer에 그 순으로 삽입해준다. *head는 대소문자를 구별하지 않으..
-
[프로그래머스] 방금그곡문제 풀이 2020. 6. 4. 16:38
풀이)사소한 실수로 시간이 오래 걸린 문제이다. C#은 하나의 멜로디로 봐야하는데, C와 #을 따로따로 개수를 세어버렸다. 3번째 예시로 설명하자면,HELLO 는 12:00 ~ 12:14 재생시간이므로 악보는 C#DEFGABC#DEFGAB 이다. 근데 이를 1분당 1멜로디, 총 14멜로디 즉, C#DEFGABC#DEFG 여기까지만 악보라고 생각해서 틀렸었다.문제를 주의해서 읽자. -전반적인 풀이과정-찾는 멜로디를 수정해준다. (C#이라면 c로 바꿔서, 하나의 멜로디로 바꿔준다.)곡 정보 담은 배열을 둘러본다.1. 음악 요소 string을 시작시간, 끝난시간, 제목, 악보들로 나눈다.2. 시작시간과 끝난시간을 분(minute)으로 바꿔서, 재생시간을 구해준다.3. 악보의 멜로디를 수정해준다. (C#이라면 ..
-
[프로그래머스] 오픈채팅방문제 풀이 2020. 6. 3. 23:18
풀이)unordered_map을 사용해서 푼 문제이다. unordered_map name; // 유저아이디를 key로, 유저닉네임을 value로 생각했다. 그래서 명령문을 {유저아이디, 명령문종류} 로 저장해둔 다음 유저아이디에 해당하는 닉네임으로 출력해줬다. 코드)#include #include #include using namespace std; vector solution(vector record) { vector answer; unordered_map name; //key :userid, value:nickname vector result; for(int i=0;i 공백기준으로 나눔 int idx =0; for(int j=0;j
-
[프로그래머스] 캐시문제 풀이 2020. 6. 3. 11:53
풀이)LRU의 개념만 잘 알고 있다면 풀 수 있는 문제이다. LRU는 os 포스팅에서도 다뤘지만가장 최근 동안 사용하지 않은 것을 교체하는 방식이다.중요한 점은, 만약 캐시 내에 있는 것을 사용하게 된다면 그것을 최근 사용 상태로 바꿔줘야 한다는 것이다. 그래서vector cache; 를 선언해 가장 최근에 사용한 것은 백터 내의 맨 뒤에 위치하도록 해줬다.miss로 인해 캐시 내에 데이터를 삭제할 때는 가장 최근 동안 사용하지 않은 것 즉, 벡터 맨 앞에 있는 것을 제거해줬다. 주의점cache 크기가 0일 경우를 생각해줘야한다. -> 무조건 miss만 일어남. 코드)#include #include using namespace std; string change(string s){//소문자로 바꿔주는 함수..
-
[프로그래머스] 뉴스클러스터링문제 풀이 2020. 6. 2. 21:53
풀이)unordered_map 을 사용해서 푼 문제이다. 풀이과정은 이러하다.1. 문자열 str1과 str2 각자 2글자씩 잘라서 원소를 만든다. (이 때, 2글자 중 영문자가 아닌 숫자, 기호 등이 오면 그 경우는 넘어간다.영문자는 대문자로 통일시켜놓는다.)2. 만들어진 원소들을 key로 생각하고, map을 통해 다중집합내에 같은 원소가 몇 개 저장되는 지 알아둔다.3. 문자열 str1의 원소들을 둘러보며, str2에서 만든 원소와 같을 경우 둘 중 원소의 개수가 적은 것은 교집합에 넣는다. 그러면, 교집합의 수를 구할 수 있다. 합집합의 경우, 전체 원소의 수 - 교집합 원소의 수 = 합집합 원소 수 임을 이용해서, 합집합도 구할 수 있다. 코드)#include #include #include usi..
-
[프로그래머스] 점프와 순간이동문제 풀이 2020. 6. 2. 13:42
문제 설명OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만, 앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 듭니다. 그러므로 아이언 슈트를 착용하고 이동할 때는 순간 이동을 하는 것이 더 효율적입니다. 아이언 슈트 구매자는 아이언 슈트를 착용하고 거리가 N 만큼 떨어져 있는 장소로 가려고 합니다. 단, 건전지 사용량을 줄이기 위해 점프로 이동하는 것은 최소로 하려고 합니다. 아이언 슈트 구매자가 이동하려는 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return하..