Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 코드 리뷰
- DFS
- 2019 KAKAO BLIND
- 스택/큐
- 시뮬레이션
- 그리디
- 백준
- 브루트포스
- 프로그래머스
- 월간 코드 챌린지
- Gold 5
- c++
- 2020 KAKAO BLIND
- 구현
- level 1
- Web
- Level 3
- 부스트코스
- DP
- 2020 카카오 인턴십
- Level 4
- SWEA
- next_permutation
- 삼성 SW 역량 테스트
- 백트래킹
- BFS
- pass
- 코드리뷰
- Level 2
- Gold 4
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 두개 뽑아서 더하기 본문
문제
프로그래머스 월간 코드 챌린지 시즌 1 - 두 개 뽑아서 더하기 (Level 1)
문제 풀이
접근 방식
이 문제는 프로그래머스에서 9월 10일에 진행된 월간 코드 챌린지 시즌 1의 1번 문제이다.
주어진 숫자 배열에서 두 수를 뽑아 더해서 만들 수 있는 모든 수를 오름차순으로 리턴해야 하는 문제였다.
2중 for문으로 두 수를 더하고 중복을 제거하여 정렬하면 되는 간단한 문제였다.
그래서 unordered_map을 사용하여 중복된 값을 제거해주었고,
sort를 사용해서 오름차순으로 정렬하여 답을 구하였다.
이 외에도 set을 사용하여 중복 제거와 정렬을 수행하거나,
unique와 erase, sort를 사용하여 중복 제거와 정렬을 수행할 수 있다.
풀이 코드 - C++
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> numbers) {
int len = numbers.size();
vector<int> answer;
unordered_map<int, int> dic;
int result;
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
result = numbers[i] + numbers[j];
if (dic[result] == 0) {
dic[result] = 1;
answer.push_back(result);
}
}
}
sort(answer.begin(), answer.end());
return answer;
}
실행 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 풍선 터트리기 (0) | 2020.09.22 |
---|---|
[프로그래머스][월간 코드 챌린지 시즌 1][C++] 삼각 달팽이 (0) | 2020.09.21 |
[프로그래머스][2020 KAKAO BLIND][C++] 기둥과 보 설치 (0) | 2020.09.18 |
[프로그래머스][2020 KAKAO BLIND][C++] 자물쇠와 열쇠 (0) | 2020.09.17 |
[프로그래머스][2020 카카오 인턴십][C++] 키패드 누르기 (0) | 2020.09.16 |
Comments