Coding Test/Programmers(62)
-
[Programmers] Lv2. 구명보트 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제를 잘 읽어야 합니다. 보트에 탈 수 있는 사람은 단 두 명입니다. 1. 사람들의 무게를 오름차순으로 정렬 2. 가장 작은 무게를 지닌 사람의 인덱스(li = 0)와 가장 무거운 무게를 지닌 사람의 인덱스(hi = people.size() - 1)를 지정 3. people[li] + people[hi] > limit 이라면, 제일 무거운 사람 혼자 밖에 탈 수 없으므로 answer++, hi-- 4. people[li] + people[hi] hi가 될 때까지 3, 4번을 ..
2023.06.13 -
[Programmers] Lv2. 짝지어 제거하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 정규식을 활용해서 replace()를 할까 생각했었는데 문제의 의도(짝을 발견하면 제거하고 앞 뒤 붙이는)와는 맞지 않았고, 짝을 기준으로 앞과 뒤 문자열을 합치는 과정에서 오버헤드가 많이 발생하니 어떻게 하면 좋을까 고민이었습니다. 그런데, 복잡할 것 없이 스택(Stack)을 활용하면 정말 쉽게 풀리는 문제였습니다. 좀 더 사고를 확장하여 유연하게 할 필요가 있을 것 같네요. ✏️소스 코드 및 결과 #include #include using namespace std;..
2023.06.12 -
[Programmers] Lv2. 피보나치 수 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 전략 입력 데이터 범위가 최대 10만 인 걸 고려하면, 재귀로는 절대 못 구하니 DP(Dynamic Programming)으로 풀었습니다. 1234567로 나눈 나머지를 리턴하라는 걸로 보아, 오버플로우를 조심해야겠다고 생각했구요. ✏️소스 코드 및 결과 #include using namespace std; const int DIVISION = 1234567; int solution(int n) { vector F(n + 1); F[0] = 0; F[1] = 1; for (int i..
2023.06.12 -
[Programmers] Lv2. 이진 변환 반복하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 사실상 풀이 과정이라 할 것도 없습니다. 문제에서 제시한 내용 그대로 코드로 구현하면 됩니다. ✏️소스 코드 및 결과 #include #include #include using namespace std; string RemoveZero(const string& str, int& removedZeroCount) { string result; for (const auto element : str) { if (element == '1') { result.push_back('1'); ..
2023.06.12 -
[Programmers] Lv2. 숫자의 표현 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 for문을 통해 자연수 1부터 차례대로 합계에 더하고, Queue에도 원소를 추가합니다. 만약 합계가 n과 같다면 answer + 1를 해주고, n < 합계가 되는 상황이라면 Queue에서 하나씩 pop 하여 합계에서 뺍니다. Queue의 원소를 pop하여 뺀 합계가 n과 같다면 answer + 1을 해 주고, 아니라면 큐가 비거나, 합계 < n이 되는 상황까지 진행해줍니다. ✏️소스 코드 및 결과 #include #include using namespace std; int s..
2023.06.12 -
[Programmers] Lv2. 최솟값 만들기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 자연수로만 이루어진 길이가 같은 두 배열이니, 하나는 오름차순으로, 다른 하나는 내림차순으로 정렬 후 각각 내적하면 되겠다 싶었습니다. 예를 들어, vector A = { \(a_1, a_2, a_3\) }, vector B = { \(b_1, b_2, b_3\) } 라고 한다면, 벡터의 내적(Dot product) = { \( a_1b_1 + a_2b_2 + a_3b_3\) }와 같습니다. ✏️소스 코드 및 결과 #include #include using namespace s..
2023.06.11