프로그래머스

●○○ [문제] 링크 1. 기둥과 보의 삽입, 삭제 여부와 설치할 위치 정보가 주어진다. 2. 조건에 맞게 삽입, 삭제를 차례로 시뮬레이션할 수 있도록 구현한다. [풀이] 처음 구현한 방법은 기둥, 보를 삽입, 삭제할 때 조건을 확인하고 다 넣어주는 것이었다. 그렇게 했더니 코드가 길어지고 답은 틀리는데 디버깅이 안되서 책보고 다시 짰다. 1. build_frame을 한 줄씩 읽어 기둥인지 보인지, 삽입할 건지 삭제할 건지 확인한다. 2. 삽입이면 append하고 조건에 맞는 설치인지 확인한다. 조건에 맞지 않으면 remove 삭제도 마찬가지로 먼저 remove하고 조건에 맞지 않으면 다시 append 3. 조건에 맞는지 확인하는 코드는 간단하다. [외울 것] * [x, y, 0] in answer : ..
●○○ [문제] 링크 1. 알파벳으로 구성된 문자열이 입력으로 주어진다. 2. 1개 이상의 단위로 문자를 자르고 연속되는 문자열을 압축하여 표현한다. 예) aabbaccc를 1개 단위로 압축했을 때 => 2a2ba3c 3. 이렇게 문자열을 압축했을 때, 압축된 문자열의 최소 길이를 구해라. [풀이] 1. 문자열의 길이를 s라고 했을 때, s/2이상의 크기로 자르는 것은 의미가 없다. 따라서, 문자열을 자르는 크기는 1부터 s/2까지이다. 2. 자르는 단위를 size라고 한다면 연속되는 지 확인할 단어 word = s[:size]로 두고 for문으로 size만큼 더하면서 문자열을 탐색해 나간다. - 만약 다음 문자열이 word와 같으면 연속되므로 count에 1을 더해준다. - 만약 문자열이 연속하지 않으..
[문제] 1. 먼저 배포되어야할 순서대로 기능의 현재 개발 진도가 적힌 progresses와 각 기능의 개발 속도가 적힌 speeds가 주어진다. 우선순위가 낮은 기능이 높은 기능보다 먼저 개발이 완료되어도 먼저 배포x 우선순위가 높은 기능이 배포될 때 함께 배포된다. 2. 이 때, 배포마다 몇 개의 기능이 배포되는지를 return - 배포는 하루에 한 번 이루어진다. [풀이] 1. progresses와 speeds를 보고 배포날짜를 큐에 저장한다. (진도가 100%이상이 되는 날) - progresses + speeds*날짜 >= 100 - 날짜 = (100-진도) / 속도의 올림값 (ceil함수 사용) 2. 저장된 완료일 수를 탐색하며 기준보다 완료일이 더 크면 배포 못함. 1) 큐의 맨 앞 원소를 ..
[문제] 초 단위로 기록된 주식가격이 담긴 배열 prices가 주어진다. 이 때, 가격이 떨어지지 않은 기간은 몇 초인지 return한다. * 제한사항 prices의 각 가격은 1이상 10000이하 prices의 길이는 2이상 100000이하 [풀이] 1. 현재를 기준으로 다음 주식 가격을 확인한다. - 주식 가격이 떨어지지 않으면 count++ 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. = ₩3이 ₩2가 될 때, 1초가 걸리므로 그 동안은 가격이 떨어지지 않는다. - 위와 같은 설명 때문에 다음 주식 가격이 떨어지면 count++를 해주고 멈춘다. 2. answer에 count값을 넣어준다. [코드] #include #include using n..
heeji_
'프로그래머스' 태그의 글 목록