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 | 31 |
Tags
- BHS
- C++
- 임베디드
- ps
- 프로그래머스
- 관계형 모델
- Application Layer
- DB
- Transport layer
- boot sequence
- leetcode
- STL
- 네트워크
- Network
- BST
- 문제풀이
- 응용 계층
- dp
- 자료구조
- 다익스트라
- Djikstra
- 백준
- Embedded
- 릿코드
- 부트시퀀스
- Database
- baekjoon
- swea
- 데이터베이스
- 전송 계층
Archives
- Today
- Total
BOBO's Note
[ 프로그래머스 ] N으로 표현 본문
https://programmers.co.kr/learn/courses/30/lessons/42895
코딩테스트 연습 - N으로 표현
programmers.co.kr
풀이 방법
N을 1개 사용해서 만들 수 있는 표현식은 다음과 같다. 표현식을 계산한 값들의 집합을 SET1라고 하자.
- N
N을 2개 사용해서 만들 수 있는 표현식은 다음과 같다. 표현식을 계산한 값들의 집합을 SET2이라고 하자. NN U SET1 op SET1와 같다.
- NN
- N + N
- N - N
- N * N
- N / N
N을 3개 사용해서 만들 수 있는 표현식은 다음과 같다. SET3 = NNN U (SET1 op SET2) U (SET2 op SET1) 이다.
- NNN
- (N + N) +,-,*,/ N
- (N - N) +,-,*,/ N
- (N * N) +,-,*,/ N
- (N / N) +,-,*,/ N
- N +,-,*,/ (N + N)
- N +,-,*,/ (N - N)
- N +,-,*,/ (N * N)
- N +,-,*,/ (N / N)
N을 4개 사용해서 만들 수 있는 표현식을 계산한 값들의 집합 SET4 = NNNN U (SET1 op SET3) U (SET2 op SET2) U (SET3 op SET1) 이다.
이를 일반화하면, SETn = NN...N U (SET1 op SET(n-1)) U (SET2 op SET(n-2)) U ... U (SET(n-1) op SET1)이다. 계산한 값들이 중복으로 저장되지 않도록 unordered_set을 사용하도록 한다.
unordered_set<int> cur_set;
num = num*10 + N;
cur_set.insert(num);
for(int i=0; i<n; i++){ // nth_set[i]
for(int a: nth_set[i]){
for(int b: nth_set[n-1-i]){
cur_set.insert(a+b);
cur_set.insert(a-b);
cur_set.insert(a*b);
if(b != 0) cur_set.insert(a/b);
}
}
}
SETn을 구한 후, 여기에 number가 포함된다면 n을 반환한다.
if(cur_set.find(number) != cur_set.end()) return n;
전체 코드는 여기서 확인할 수 있다.
'Algorithm > Problem Solving' 카테고리의 다른 글
[ 프로그래머스 ] 큰 수 만들기 (0) | 2020.06.30 |
---|---|
[ LeetCode ] 98. Validate Binary Search Tree (0) | 2020.06.28 |
[ LeetCode ] 480. Sliding Window Median (0) | 2020.06.24 |
[ Baekjoon ] 2110. 공유기 설치 (0) | 2020.06.24 |
[ SWEA ] 5644. 무선 충전 (0) | 2020.06.06 |
Comments