본문 바로가기

Programming/C++ - 백준63

[백준] 7568번 : 덩치 (C++) + pair 클래스 문제 풀이 pair 클래스를 이용하여, 몸무게 x와 키 y를 함께 저장했다. 등수를 구하는 방법은 본인보다 덩치가 큰 사람 + 1이므로, rank = 1로 선언하고 if문을 이용해 해결했다. pair 클래스를 사용하기 위해서는 헤더를 이용해야 한다. 만약, 이나 헤더파일을 사용한다면, 안에 헤더 파일도 포함되어 있다. template struct pair; pair p; pair p; p.fisrt// p의 첫 번째 인자 반환 p.second// p의 두 번째 인자 반환 make_pair(value1, value2)// value 1, 2를 한 쌍으로 하는 pair을 만들어 반환 코드 #include #include using namespace std; int main() { int N, weight, .. 2024. 3. 3.
[백준] 1978번 : 소수 찾기 (C++) 문제 풀이 int 변수 N, num, decimal(소수의 개수), count(0이라면 소수X, 아니라면 소수O)를 선언했다. 소수는 1과 자기자신으로 나누었을 때만 나머지가 0이 된다. 반대로, 소수가 아닌 경우에는 1과 자기 자신 사이의 수로 나누면 나머지가 0이 되는 것을 이용했다. 아래의 코드와 같이, 소수가 아니라면 count++를 하였다. for문을 빠져나왔을 때 count == 0이라면 소수이므로 소수의 개수를 의미하는 변수인 decimal을 증가시켰다. 예를 들어, num = 9, j = 3이라면, 9 % 3 = 0이다. 이는 소수가 아니므로 count를 증가시킨다. for문을 빠져나오면 count == 0인지 확인하는 if문을 통해, 소수라면 변수 decimal을 증가시킨다. for (i.. 2024. 2. 21.
[백준] 2751번 : 수 정렬하기 2 (C++) + 시간초과 & 런타임 에러(OutofBounds) 해결 문제 풀이 첫 번째 코드 - 실패 ➡ 시간복잡도: O(n2), int 배열 사용 // O(n^2), 시간초과 & 배열의 크기가 커 오류 발생 #include #include using namespace std; int main() { int N, num, temp; int arr[1000001]; cin >> N; for (int i = 0; i > num; arr[i] = num; } for (int i = 0; i > num; v.push_back(num); } sort(v.begin(), v.end()); for (int i = 0; i < N; i++) { cout 2024. 2. 21.
[백준] 10250번 : ACM 호텔 (C++) + 반례 및 그림 설명 문제 풀이 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님을 H, W, N으로 입력받는다. 이때, 기본적인 경우에는 아래와 같이 호실을 계산할 수 있다. 하지만, floor = 0인 경우에는 위 공식이 성립하지 않기 때문에, if문을 이용해 다른 공식을 사용해야 한다. 코드 #include using namespace std; int main() { int T, H, W, N;// test data, floor of hotel, the number of room, the number of people int floor, room, number, answer[100]; cin >> T; for (int i = 0; i > H >> W >> N; floor = N % H;.. 2024. 2. 20.
[백준] 27866번 : 문자와 문자열 (C++) 문제 풀이 string과 int를 입력받은 후, 배열을 이용한다. 이때, 배열은 0부터 시작하므로 정수 i - 1을 하는 것에 주의하자. 코드 #include #include using namespace std; int main() { string s; int i; cin >> s >> i; cout 2024. 2. 20.
[백준] 2839번 : 설탕 배달- Greedy Algorithm (C++) 문제 풀이 - Greedy Algorithm(그리디 알고리즘) 가장 적게 봉지를 들고 가도록 하기 위해서 5kg 봉지를 최대한 이용해야 한다. 따라서, n을 5로 나눈 나머지가 0이라면, 몫을 출력한다. if (n % 5 == 0) { bag += (n / 5); cout n; while (n >= 0) { if (n % 5 == 0) { bag += (n / 5); cout 2023. 5. 25.
[백준] 2748번 : 피보나치 수 2 | int & long long 범위 (C++) 문제 풀이 아래에 첨부한 2747번 문제와 같은 방식으로 풀이했다. 두 문제의 차이점은 n의 범위이다. 2747번 문제는 n의 최댓값이 45이지만, 이 문제는 90이기 때문에 DP를 int 형으로 선언하면 오류가 발생한다. n = 90일 때, 피보나치 수는 288,0067,1943,7081,6120이기 때문에, DP를 long long 형으로 선언했다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이며, long long의 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807이다. [백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경.. 2023. 5. 24.
[백준] 2747번 : 피보나치 수 - (C++) 문제 풀이 다이내믹 프로그래밍(DP)를 이용해 문제를 해결했다. n이 조건의 최댓값인 45인 경우, 피보나치 수는 11,3490,3170이다. int 형의 범위는 -2,147,483,648 ~ 2,147,483,647이므로, 피보나치 수의 최댓값이 범위 내에 있기 때문에, DP를 int로 선언했다. 코드 #include using namespace std; int main() { int n; int DP[45]; cin >> n; DP[0] = 0; DP[1] = 1; for (int i = 2; i 2023. 5. 24.
[백준] 2775번 : 부녀회장이 될테야 - (C++) 문제 풀이 k층의 n호에 거주하는 사람은 아래의 표와 같다. 재귀함수를 이용하여, getNum 함수를 만들었다. int getNum(int x, int y) { if (y == 1) { return 1; } else if (x == 0) { return y; } else { return (getNum(x - 1, y) + getNum(x, y - 1)); } } if else 문을 이용하여 n = 1인 경우에는, 항상 한 명이 거주하고 있기 때문에 return 1을 k = 0인 경우에는, 항상 n명이 거주하고 있기 때문에 return n을 해주었다. 위의 경우가 아니라면, (k층의 n-1호) + (k-1층의 n호) = (k층의 n호)가 성립한다. 코드 #include using namespace std;.. 2023. 5. 24.
반응형