코딩테스트 대비/프로그래머스 12

프로그래머스 이모티콘할인행사

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 문제 풀이는 떠오르는데 막상 코드로 작성하기가 어렵다..꾸준히 보는 것만이 답인 것같다.. 그래도 점점 문제를 보면서 어떤 식으로 접근 할 지 떠오르는 점에 의의를 두고자 한다. 이번 문제는 카카오 문제였는데 아래처럼 접근하고자 했다. 1) 먼저 할인율을 10, 20 , 30 ,40% 로 나누고 이를 적용한 할인가격을 비교하려 했다. => 할인 가격을 비교하는 것보다 먼..

프로그래머스 LV2 디펜스 게임

문제 유형 : heap 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 1) n에서 enemy[i]를 빼고 난 값을 그 다음라운드로 넘겨줘서 또 적을 제거하는 방식이다. 2) 1번을 푸는 과정 중 병사 수가 부족하거나 없으면 종료, 이 과정에서 K 라는 무적권 방어를 사용해서 병사 손실 없이 적을 물리칠 수 있다. 3) 풀이법은 일단 K 즉, 무적권 횟수를 처음부터 써버리고 그 다음부터 라운드를 진행하게 해서 coun..

프로그래머스 LV 2 당구 연습

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 : 굉장히 어려웠다..ㅠㅠ 당구 쿠션을 칠 때 계산하는 거였는데 처음에는 직접 피타고라스의 정리로 계산해서 풀려 했다. 주어진 1,2,3번 case를 모두 손수 계산해봤고 그 결과 balls[i][0] , balls[i][1] 을 endX, endY로 맞춰서 startX, startY와 거리 계산을 해야함을 깨달았다. 그러나 직접 대각선을 일일이 계산하기엔 번거로웠고 직..

프로그래머스 호텔 대실

문제 : 호텔 대실 문제 유형 : heap 사용 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 이번 주차에 1번 문제였던 과제 진행하기와 비슷하게 문자로 된 시간을 숫자로 바꾸는 것이었다. 과제 진행하기 문제에서는 그 부분을 어떻게 할 지 몰라서 한참 헤맸는데 그 때의 경험으로 문자열을 숫자로 바꾸어 주었다. 그 후 시작 시간 기준으로 빠른 순서대로 정렬 해주었다. 그리고 문제 해법은 과제 진행하기를 참고 했다 먼저 들어온 ..

프로그래머스 LV 1 K번째 수

문제 유형 : 정렬 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 1) array = [1,5,2,6,3,7,4] 일 때 i,j,k가 무엇인지를 파악하는 것이 중요했다. i = 2 : i부터 j = 5 : j까지 k = K번째 숫자 2) commands = [ [i,j,k] [i,j,k] ] 이런 식으로 2차원 배열이기 때문에 commands를 해석해주는 것이 중요했다. commands= [ [2,5,3] , [4,4..

프로그래머스 LV1 체육복

문제 유형 : 그리디(탐욕법) => 그 순간마다 최선의 답을 찾는 알고리즘 문제 : 체육복 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 처음 풀이 처음 LV1이라 기존 풀던 LV3 보다 쉬울 것이라 생각했는데 생각보다 까다로웠다. 아직 갈 길이 먼 것 같다. 토이프로젝트 기간이 끝나면 알고리즘과 react 를 집중적으로 배워야 할 것 같다. 처음 생각한 풀이는 다음과 같다. 1) reserve : 빌려줄 수 있는 친구들 lost : 도..

프로그래머스 LV3 등굣길

문제 유형 : 동적계획법 (DP) 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 해결 법 미로찾기와 비슷한 문제라고 생각해서 그렇게 풀려고 했다. 그런데 몇 년전에 풀었던 DFS 미로찾기 문제 때 했던 방식이 생각이 나질 않았다...! 역시 복습을 안하면 안될 것 같다라는 생각을 했다. 먼저 생각한 풀이에서는 오른쪽으로 가면 (i+1,j) , 아래로 가면 (i,j+1)인 것을 생각했고 이 과정을 저장해가며 이어가는 방식을 ..

프로그래머스 LV 3 정수삼각형

문제 유형 : 동적계획법 (Dynamic Programming) https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 동적계획법 동적 계획법이란 DP라고 하며, 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결괏값을 저장해 다시 큰 문제를 해결할 때 사용되는 것으로 , 특정 범위까지의 값을 구하기 위해서 그것과 다른 범위까지의 값을 이용해 효율적으로 값을 구하는 알고리즘 설계 기법이다. 앞에서 구했던 답을 다시 활용하..

프로그래머스 LV 2 스킬트리

문제 유형 : ? 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 : skill 을 리스트로 만들어주어서 그 값 하나하나를 반복문으로 비교 하는 방식을 거쳤다. 2. 풀이 방식 1) skill을 list화 해주었다. 그 후 skill_trees 안에 들어가 있는 스킬 트리를 반복문을 돌려주어 하나씩 비교했다. 2) 그 후 skill_trees 안을 도는 i에서 또 하나의 반복문을 돌아 하나씩 살펴보았다. ex) i = ..

프로그래머스 LV2 큰 수 만들기

문제 알고리즘 유형 : Greedy 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 풀이 : Stack 사용 : Greedy 알고리즘이란 미래의 일을 생각하지 않고 현재 가장 최선의 방식을 찾는 탐욕 알고리즘이라고도 불린다. 이 알고리즘에 대해 알아보다보니 Stack 을 사용해 반복문을 통해 현재 값 넣어주고 다음 값 혹은 이전 값과 비교해서 없애주는 형식으로 처리하면 될 것 같았다. 물론 이를 코드로 적용하기엔 많은 오류와..