본문 바로가기

프로그래머스 풀이/Lv 2

(37)
[프로그래머스LV2] 뒤에 있는 큰 수 찾기(Java) https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr N이 백만이기 때문에 O(N^2)으로 처리할 수 없다 혹은 O(NlogN)까지 최적화해야한다. 그러나 이분탐색으로 풀만한 여건을 안보이고 이중포문을 최적화해야하는 문제이다. 처음엔 스택을 생각하긴 했는데 구체적인 해결법을 생각하지는 못했다. 이 문제에서 파악했어야할 것은 다음과 같다. 9 2 1 1 6 이라고 주어졌을 경우 2, 1, 1 은 동일하게 6을 뒷큰수로 갖는다. 만약 이중포문으로 푼다면 2 -> 6 , 1 -> 6, 1 -> 6 으..
[프로그래머스 LV2] 다리를 지나는 트럭 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/42583?language=cpp# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번에도 시뮬레이션 문제로 그림을 통해 시뮬레이션을 직접 진행해보는 것이 문제에 가장 도움이 된다.   이렇게 표를 만들어보았다. 그리고 이름처럼 ready에 있는 트럭들은 레디큐, work에 있는 즉 다리에 있는 트럭들은 워크큐로 명명했다.  먼저 시간을 신경쓰지말고 시뮬레이션을 진행해본다고 하자. 그렇다면 총 세가지 케이스가 있다. 1. 도로에 트럭을 올릴 수 있음 2. 도로가 가득차서 트럭을 올릴 수 없음3. 무게..
[프로그래머스LV2] 땅따먹기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음엔 백트래킹으로 구현했는데 시간초과가 났다. 4^10만이기 때문에 말도안되는 시도였다.그래서 DP를 생각했고 백트래킹에 접목했는데 틀렸다. 그리고 좀 더 유심히 문제를 보니 열은 반드시 4로 주어지는 문제였다. 그래서 Bottom-Up 방식 DP를 생각해냈다. 결국 i번 행에서는 i - 1행의 3가지 경우 중 하나만 올 수 있고 그 중 최댓값을 구하면 되기 때문이다. 그래서 다음과 같은 점화식이 생긴다. DP[i][j] = value[i][..
[프로그래머스LV2] 과제 진행하기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr Greedy 라고 해야할까? 일반적인 구현문제이다. 주어진 조건을 잘 지키면 되지만 문자열로 주어진 시간을 분단위로 어떻게 잘 바꿔서 컨트롤할 수 있느냐가 관건인 문제였다.  우선순위 큐를 사용해 진행해야하는 밀린 과제들을 컨트롤 해 주었다. #include #include #include #include #include using namespace std;pair timesplit(string t..
[프로그래머스LV2] 롤케이크 자르기 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/132265?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음에 모두 오른쪽에 담아두고 하나씩 꺼내서 왼쪽으로 이동시키면 되는 문제. 그러나 이 과정에서 반복문을 사용해 모두 열람하면 안되고 Set과 Map을 적절하게 사용하여 반복하지 않는 것이 중요하다.  Map에 개수가 0이 되면 Set에서도 삭제하는 방식을 사용하면 현재 종류가 몇개 있는지 쉽게 파악하면서 진행할 수 있다.  #include #include #include #..
프로그래머스 - 전화번호 목록(Java) https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 처음엔 123412321 이렇게 들어온다고 가정했을 때 가장 짧은 길이만큼 모두 잘라서 셋에 넣어놓고 판단하면 된다고 생각했다. 그러나 다음과 같은 반례가 존재한다. 122342345 내 풀이대로 하면 위의 값들은 12, 23, 23 으로 해시값에 들어가 false라고 답할것이다. 사실은 그렇지 않은데 말이다. 완전히 잘못된 로직이다. 그런데 제출했을 때 2가지 케이스 빼고 다 맞아서 어딘가 실수가 ..
프로그래머스 - 후보키(C++) https://school.programmers.co.kr/learn/courses/30/lessons/42890# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 조합과 0123이 들어왔을 때 023을 찾아낼 수 있는가? 라는 문제와 같다. 그래서 각 튜플을 문자열을 이어붙이고 set을 사용해 유일성을 판단하고각 후보키들을 배열에 넣어놓고현재 후보키의 후보를 0123이 들어왔을 때  023을 가져와서 임시 배열의 0, 2, 3을 true로 만든다.그리고 0,1,2,3을 거쳐 임시 배열이 true인 것의 개수를 샌다. 만약 카운트의 수 = 지금 비교하고 있는 ..
프로그래머스 - 2020 KAKAO BLIND RECRUITMENT괄호 변환 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 재귀를 사용한 구현 문제이다.  stack을 사용해 괄호가 올바른지 확인하는 것에다가 추가적인 요소를 덧붙힌 문제이다.  카카오에서 요즘은 이런 문제가 안나오는거 같은데 예전엔 구현을 자주 시킨 것 같다. #include #include #include #include using namespace std;bool check(string s){ stack stk1; for(int i ..