cpp
-
[C++] 백준-2309 일곱 난쟁이CS & Algorithm & Data Structure & C/C++ 2023. 8. 29. 22:37
아이디어? 이 문제의 아이디어는 "입력 받은 아홉 난쟁이의 키 중에서 두 난쟁이를 뺀 나머지 합이 100이 되는 경우를 찾는 것" 이다. 이를 위해서는 여러번 loop를 돌려야하는데, C++에는 next_permutation(순열)이라는 함수가 존재한다. [ next_permutation ] 만약 {0, 1, 2} 라는 배열이 있다고 했을 때 이를 순열을 구한다면 아래와 같은 순열을 얻을 수 있다. {0, 1, 2} {0, 2, 1} {1, 0, 2} {1, 2, 0} {2, 0 ,1} {2, 1, 0} 단, 순열을 사용할 때는 오름차순으로 정렬 된 값을 가진 컨테이너만 사용가능하다. 해결하는 방법은? 우선 전체 코드를 보여주고 각 코드블럭을 설명하겠다. #include using namespace st..
-
[C++] 백준-1037 약수CS & Algorithm & Data Structure & C/C++ 2023. 8. 16. 22:40
위 문제를 해결하기 위한 아이디어는 다음과 같다. 1. 주어진 약수 중에서 가장 작은 약수와 가장 큰 약수를 찾는다. 2. 가장 작은 약수와 가장 큰 약수를 곱한다. 즉, 주어진 약수들을 입력받아서 벡터에 저장한 후, 최소값과 최대값을 찾아서 곱해주면 답을 찾을 수 있다. Javascript에 min, max가 있듯이 C++에도 비슷한 것이 있다. min_element(), max_element()이다. #include using namespace std; int main() { int n; cin >> n; vector arr(n); for(int i=0; i> arr[i]; } // 약수 중 최소값, 최대값 찾기 int min = *min_element(arr.begin(), arr.end()); i..
-
[C++] 백준-1620 (나는야 포켓몬 마스터 이다솜)CS & Algorithm & Data Structure & C/C++ 2023. 8. 15. 13:30
문제는 쉽게 말해서, 문자열의 경우에는 번호를 말해야하고, 숫자의 경우에는 번호에 해당하는 문자를 출력하는 것이다. 해결 방법은 아래와 같다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N, M; cin >> N >> M; unordered_map nameToNumber; vector numberToName(N + 1); for (int i = 1; i > name; nameToNumber[name] = i; numberToName[i] = name; } for (int i = 0; i > qu..