분류 전체보기
-
[프로그래머스] 4단 고음문제 풀이 2020. 6. 7. 18:40
문제코드) https://programmers.co.kr/learn/courses/30/lessons/1831 풀이)앞에서부터 규칙을 적용해서 최종 음높이가 나오는 경우를 세면 시간초과가 걸린다.프로그래머스의 다른 문제, 점프와 순간이동 처럼 뒤에서부터 경우를 생각해서 풀어야하는 문제다. 2가지 조건을 생각하면 된다.1. 처음 문자열 시작은 무조건 *이다. 즉 값은 3부터 시작한다.2. 마지막 문자열 2글자는 무조건 ++이다. 이 조건들을 생각하면서, n-2의 값을 확인하면 된다.(++) = 2 를 제외한 값 주의점시간제약이 꽤 까다롭기 때문에, 현재 +개수에 맞춰서 표현할 수 있는 값이 최종 나와야하는 값보다 크다면 더이상 확인해보지 않게 넘어가도록 표현해줬다. 코드)// 전역 변수를 정의할 경우 함수..
-
[프로그래머스] 호텔 방 배정문제 풀이 2020. 6. 5. 22:07
문제 설명[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.]스노우타운에서 호텔을 운영하고 있는 스카피는 호텔에 투숙하려는 고객들에게 방을 배정하려 합니다. 호텔에는 방이 총 k개 있으며, 각각의 방은 1번부터 k번까지 번호로 구분하고 있습니다. 처음에는 모든 방이 비어 있으며 스카피는 다음과 같은 규칙에 따라 고객에게 방을 배정하려고 합니다.한 번에 한 명씩 신청한 순서대로 방을 배정합니다.고객은 투숙하기 원하는 방 번호를 제출합니다.고객이 원하는 방이 비어 있다면 즉시 배정합니다.고객이 원하는 방이 이미 배정되어 있으면 원하는 방보다 번호가 크면서 비어있는 방 중 가장 번호가 작은 방을 배정합니다.예를 들어, 방이 총 10개이고, 고객들이 원하는 방 번호가 순서대로 [1, 3, 4, 1..
-
[프로그래머스] 선입 선출 스케줄링문제 풀이 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){//소문자로 바꿔주는 함수..