본문 바로가기
반응형

전체 글58

백준 1018번 (체스판 다시 칠하기) c++ 문제 브루트포스를 통해 이문제를 해결하면 된다. 먼저, 이렇게 W와 B로 시작하는 체스판을 만들어놓고 string w_start[8] = { "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW" }; string b_start[8] = { "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB", "BWBWBWBW", "WBWBWBWB" }; W와 B로 시작하는 것 중 어떤 것이 더 유리한지 count를 센다. int w_check(int col, int row){ int count = 0; int w_col = 0; i.. 2023. 4. 9.
백준 11866번 (요세푸스 문제 0) c++ 문제 문제 풀이 1. 큐를 이용한다. 큐는 FIFO(First In First Out)으로 선입선출 즉, 먼저 들어온 얘를 먼저 빼주는 방식이다. 그래서 Enqueue를 하면 맨 뒤에 들어가고 Dequeue를 하면 맨 앞 원소가 나오게 된다. 문제에서 N은 1000개이다. 그래서 그냥 선형 queue를 구현하여 사이즈를 잘못 잡으면 못 맞출 가능성이 있다. 이럴 때는 원형 queue를 쓴다면 메모리를 훨씬 절약하여 풀 수 있다. 선형 queue는 포화 상태가 아니여도 만약 큐의 rear가 배열의 마지막 인덱스와 같다면 포화 상태로 인식하여 더 이상 삽입 할 수 없다. 하지만 원형 queue는 선형 queue와 다르게 만약 큐의 rear가 배열의 마지막 인덱스이면서 포화 상태가 아니라면 rear를 queu.. 2023. 2. 16.
백준 11723번 (집합) c++ 문제 문제풀이 1. 비트마스킹을 이용해야 한다. 비트마스킹이란? 컴퓨터는 모든 데이터를 이진수로 표현한다. 그래서 이진수 표현을 자료구조로 쓰는 기법을 비트마스킹이라고 한다. 비트마스킹을 이용하면, 더 적은 메모리, 더 적은 시간을 사용하여 효율적으로 구현할 수 있다. ex) a = 9, b = 7 1. a & b (AND) a = 1001 b = 0111 a & b = 0001 = 1 2. a | b (OR) a = 1001 b = 0111 a | b = 1111 = 15 3. a ^ b (XOR) 같은 비트라면 0으로, 틀리다면 1로 바꾼다. a = 1001 b = 0111 a ^ b = 1110 = 14 4. ~a (NOT) a = 1001 ~a = 0110 = 6 5. (SHIFT) a = 100.. 2023. 2. 15.
백준 9655번 (돌 게임) c++ 문제 문제 풀이 문제의 조건을 제대로 파악해야 한다. 1. 둘 다 각각의 차례에 1개 또는 3개를 가져갈 수 있다. 2. 두 사람이 완벽하게 게임을 플레이 한다. 3. 게임은 상근이가 먼저 시작한다. N = 1 N = 2 N = 3 N = 4 N = 5 N = 6 SK CY SK CY SK CY 이렇게 각 N에 따라 답은 정해져 있다. 규칙을 보자면 짝수일 때, 홀수일 때 각각 답이 같은 것을 알 수 있다. 그래서 단순히 홀수, 짝수를 판별해 답을 도출할 수 있다. 전체 코드 #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin >> N; if(N & 1){ cout N; bool .. 2022. 12. 27.
반응형