본문 바로가기

전체 글78

[백준] 11866번 : 요세푸스 문제 0 (C++) 문제 풀이 요세푸스 문제는 큐(Queue)를 이용해 풀이할 수 있다. queue를 사용하기 위한 헤더 파일을 추가한다. 큐에 1부터 n까지의 원소를 넣는다. #include // queue를 이용하기 위한 헤더 파일 int n, k; queue q; // queue 선언 cin >> n >> k; for (int i = 1; i n >> k; for (int i = 1; i 2024. 3. 13.
[백준] 10845번 : 큐 (C++) 문제 풀이 큐(Queue)은 FIFO(Last In First Out, 후입선출) 구조이다. 큐를 구현하기 위해 std::queue를 사용할 수 있다. 스택과 비슷한 형태의 함수를 지원하지만, 의미와 동작은 다르게 정의되어 있다. [백준] 10828번 : 스택 (C++) 문제 풀이 스택(Stack)은 LIFO(Last In First Out, 후입선출) 구조이다. 스택은 컨테이너의 한 쪽 끝에서만 데이터를 삽입하거나 삭제할 수 있다. 따라서, 한쪽 끝이 아닌 위치에 있는 데이터는 접근하거 jigoo-log.tistory.com 예를 들어, std::queue에서 pop()은 pop_front()를 의미한다. 만약, 단순히 양 끝에 있는 원소에 접근하고 싶다면 front(), back() 함수를 사용하면 .. 2024. 3. 11.
[백준] 10828번 : 스택 (C++) 문제 풀이 스택(Stack)은 LIFO(Last In First Out, 후입선출) 구조이다. 스택은 컨테이너의 한 쪽 끝에서만 데이터를 삽입하거나 삭제할 수 있다. 따라서, 한쪽 끝이 아닌 위치에 있는 데이터는 접근하거나 변경할 수 없다. 스택을 구현하기 위해 std::deque 와 std::stack을 사용할 수 있고, 풀이에 후자를 사용했다. // std::deque를 사용해 stack 구현 #include std::deque stk1; stk1.push_back(1); stk1.push_back(2); stk1.pop_back(); // std::stack를 사용해 stack 구현 #include std::stack stk2; stk2.push(1); stk2.push(2); stk2.pop();.. 2024. 3. 11.
[백준] 2798번 : 블랙잭 (C++) 문제 풀이 이 문제를 풀기 위해 브루트포스(Brute-force Search)를 사용했다. 브루트포스는 '무식한 힘'이라는 뜻으로, 완전 탐색 알고리즘을 이용한다. 즉, 모든 경우의 수를 파악해 답을 도출하는 방식이다. 아래처럼 삼중 for문을 이용해 결과를 도출했다. for (int i = 0; i N >> M; for (int i = 0; i > arr[i]; } for (int i = 0; i < N - 2; i++).. 2024. 3. 10.
[백준] 2869번 : 달팽이는 올라가고 싶다 (C++) 문제 풀이 이 문제를 풀면서 참 많은 고난이 있었다.. 세 번째 풀이만에 성공했고.. 문제를 풀면서 화난 치와와가 된 기분을 느꼈다.. 첫 번째 코드 - 실패 ➡ 시간복잡도: O(n), while문 사용 처음에는 단순하게 A만큼 증가하고, B만큼 감소하는 while문을 만들어 높이 변수 height가 V에 도달하면 break 되도록 했다. 하지만, 시간 초과가 발생했다. //첫 번째 시도_ O(n), 시간초과 #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int A, B, V, height = 0, day = 0; cin >> A >> B >> V; w.. 2024. 3. 7.
[백준] 5597번 : 과제 안 내신 분..? (C++) 문제 풀이 array의 원소를 모두 0으로 초기화한 후, for문과 arr[입력된 숫자]를 1로 저장했다. 결론적으로, arr[i] == 0이라면 출력되게 하였다. array를 모두 0으로 초기화하려면, int arr[31] = { 0, };// array를 모두 0으로 초기화 만약, array를 0이 아닌 다른 수로 초기화하기 위해서는 헤더 파일에 포함되어 있는 fill 또는 fill_n 함수를 사용하면 된다. fill(변경하려는 원소의 범위 시작주소, 종료주소, 변경 값) fill_n(변경하려는 원소의 범위 시작주소, 원소의 개수, 변경 값) std::fill(arr, arr + 31, -1)// fill(변경하려는 원소의 범위 시작주소, 종료주소, 변경 값) std::fill_n(arr, 31, -.. 2024. 3. 5.
[백준] 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.
반응형