본문 바로가기

프로그래머스 풀이/Lv 3

(15)
프로그래머스 - 파괴되지 않은 건물(C++, 누적합 응용) https://school.programmers.co.kr/learn/courses/30/lessons/92344?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오늘 현대 오토에버 코딩테스트를 봤는데 누적합을 통해 지정 범위의 숫자들이 몇번 사용되었는지 확인해야하는 문제가 나왔다.누적합을 사용하면 효율적으로 풀 수 있는 문제였지만 난 생각해내지 못했다.. 아이디어는 다음과 같다. [1~ 7][3~8][4~9]  1~10각 자릿수가 아래 범위에 몇번 들었는지 확인하려고 한다. 그렇다면 가장 쉬운 방법은 각 숫자들을 범위와 대조하면 된다 ..
프로그래머스 - N으로 표현 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 수준높은 DP문제라고 생각한다. 동적계획법은 언제나 어렵고 나를 힘들게한다.. 먼저 이 문제 분류를 통해 동적계획법을 알고 들어가긴 했지만 DP를 써야하는 이유는 역시나 이전의 값을 다시 재사용하게 된다는 점이다. 처음 접근할 때 DP[1]~ DP[32001] 를 각 N이 만들 수 있는 점화식을 구하여 보려 했으나 44퍼센트에서 틀렸다.. 아주 어림없는 도전은 아니었다고 생각하는데 아쉽다. ..
프로그래머스 - 단어 변환 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr dfs/bfs 문제라는 것을 확인했기 때문에 쉽게 풀 수 있었다. 난 bfs방식을 택했다. 중요한 것은 하나의 단어에 도달하면 다른 단어들은 이 단어에 도달할 수 있어도 할 필요가 없음을 인지해야한다. 만약 지금 이 단어에 도달했는데, 다음으로 이 단어에 도달한다는 것은 결국 최단거리가 아니라는 의미이기 때문이다. 그러므로 방문표시를 하고 bfs 탐색을 하면 문제는 풀린다. 이 문제가 레벨3인 이..
프로그래머스 - 경주로 건설 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/67259# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다익스트라를 응용하면 될 것이라 생각했다. DP배열을 만들고 계속 갱신해나가며 최적의 길을 찾으면 된다고 생각했다. 그러나 다익스트라가 가능하려면 한가지 강력한 전제 조건이 필요하다. 지금 dp값 보다 큰 값은 절대로 다시 체크하지 않아도 된다. 무슨말이냐면 지금 dp[2][2] = 30 이라하였을 때, 순회하다가 다시 dp[2][2]를 만났을 때 현재 값이 31이라면 가지 않겠다는 의미이다. ..
프로그래머스 - 다단계 칫솔(C++) https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 백엔드 직무 데브 매칭 기출 문제이다. 트리를 자식부터 반대로 타고 탐색해야하기 때문에 부모가 자식의 정보를 갖고 있게 하지 않고 자식이 부모의 정보를 갖고 있도록 해야한다. 그리고 각 노드의 이름이 문자열이기 때문에 문자열을 숫자로 변환하여 map으로 관리해주었다. 1. 문제 조건 - 돈을 번 노드부터 시작하여 그 노드의 최상단 부모까지 타고 올라가야한다. - 그러면서 번 돈을 분배하는 작업을 ..
프로그래머스 - 불량 사용자 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 백트래킹 조합문제이다. 문제를 해석하는 것이 가장 중요하고 해석만 하면 조합을 구할 줄 알면 쉽게 풀 수 있다. 나중에 한번 더 풀어보면 좋을 문제 #include #include #include #include #include using namespace std; vector user, ban_user; set answerset; bool check[8] = {false,}; bool banCh..
프로그래머스 - 숫자 게임 (C++) https://school.programmers.co.kr/learn/courses/30/lessons/12987?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr A팀의 순서를 바꿔도되는데 이것을 생각해내지 못했던 문제. 어렵지 않은 문제인데 아이디어가 잘 안떠오른다 어떻게 해야 이런 사고력을 늘릴 수 있을까... #include #include #include #include using namespace std; int solution(vector A, vector B) { int answer = 0; sort(A.rbegin(),..
프로그래머스 - 야근지수(C++) https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제를 풀며 생각의 순서는 이러했다. 1. 내가 잘 하는 문제 유형으로 바꿀 수 있을까? dfs, bfs 등등 2. 아니라면 뭘로 바꿀 수 있을까. 이 문제는 우선 가장 최소화 시키는 것이 목적이다. 그리고 n이 백만으로 크다. 그렇다면 DP, 이분탐색, 파라메트릭을 사용할 수 있을까? 3. 모두 아닌 것 같은데 그렇다면 단순 구현인가? 4. 단순 구현이라 하면 어떤 자료구조를 사용할 수 있을..