본문 바로가기

코테42

[코테오답] 연산자 우선순위 & 비트 연산 출력 결과 Link : https://www.acmicpc.net/problem/14391Level : G3유형 : 비트마스킹📌 문제 탐색1.종이를 자르는데, 가로 혹은 세로가 1이 되어야 한다.2.각 조각 숫자의 합이 최대가 되어야 한다. 📌 오답1. 간격 없이 한자리 수 int가 연속으로 입력 받아지는 경우char 형으로 입력 받고 int로 변환해줘도 되지만, 아래와 같이 입력받을 수 있다.scanf("%1d", &arr[i][j]); 2. 연산자 우선순위를 생각하여, 원하는 출력값이 나오게 하려면 '괄호'를 잘 쳐야 한다.고치기 전if(s & (1 고친 후if((s & (1  & 연산자의 우선 순위보다 == 연산자의 우선순위가 더 높기때문에 (s & (1 괄호로 묶지 않으면 & 보다 == 연산자가 먼저 처.. 2025. 1. 1.
[코테오답] 시프트 연산 결과 대입 Link : https://www.acmicpc.net/problem/1094Level : S3유형 : 비트마스킹 📌 문제 탐색길이가 64인 막대기를 잘게 나누고 붙이며, 원하는 길이(X)로 만드는 것이 목표다. 📌 코드 설계하기 1. 원하는 길이 X 입력 받기2. for문의 i 변수는 짧은 막대 길이 변수다. sum은 막대 길이 합(모든 막대) 변수다. 3. 반복문을 돌 때 경우는 3가지다.case 1 : 현재 막대 길이가 원하는 길이보다 크면 sum은 재정의된다. (sum=i)남은 막대 버리니까 이후 코드는 실행 X (continue)case 2 : 현재 막대 길이 합이 원하는 길이보다는 작은데, 현재 가장 작은 막대 i를 더했을 때 원하는 막대길이 보다 커지는 경우 그 작은 막대는 무시 (con.. 2024. 12. 26.
[BOJ] 별 찍기 Link : https://www.acmicpc.net/problem/2447Level : G5유형 : 재귀 재귀는 일반화를 생각하면 코드를 작성해야 한다. 로직을 하나하나 다 따져보면 무간지옥에 빠져 머릿속이 꼬이고 감도 안온다.함수를 계속 따라 들어가면 답도 없고, 그냥 딱 재귀적으로 생각해야 한다!n=1일 때 잘 작동하지?n=k일 때 잘 작동하지?그럼 n=k+1일 때도 잘 작동할 것이다.(출처- 바킹독님) 📌 문제 탐색하기n : 정사각형의 한변의 길이 (3의 거듭제곱, 3의 8승까지)정사각형의 한변의 길이가 3일 때 가운데 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. 재귀를 이용해서 문제를 푼다. 📌  코드 설계하기1. 크기 n이 주어졌을 때 정사각형의 한변의 길이가 3.. 2024. 12. 15.
[코테오답] BOJ 15649번 N과 M Link : https://www.acmicpc.net/problem/15649Level : S3유형 : 백트래킹📌 문제 탐색순열 문제이다.1부터 N까지의 자연수 중에서 중복없이 M개를 고른 수열을 출력하는 문제이다. 📌  코드 설계하기1. n과 m을 입력 받는다.2. 1부터 n까지 자연수가 존재하므로 반복문 for문을 돌며 모든 경우 탐색을 시작한다.3. 재귀를 호출하여 현재 상태에서 가지치기를 하면서 모든 경우를 탐색한다.- 그러다 cnt가 m이 되는 순간 현재까지 ans에 저장된 수를 출력하는 printNum이라는 함수를 호출하고 solve 함수를 종료한다.- solve 함수가 종료되면, 방문 배열 visited와 정답 벡터 ans가 원래 이전 상태로 돌아가도록 - 해당 숫자의 visited를 .. 2024. 12. 15.
[BOJ] 물통 Link : https://www.acmicpc.net/problem/2251Level : G5유형 : dfs, bfs📌 문제 탐색하기A, B, C : 각 물통의 부피 물병의 물이 차는 가능한 상태는 0부터 최대 용량까지이므로 가능한 경우는 부피 + 1 이다.따라서 시간 복잡도는 O((A+1)*(B+1)*(C+1))이다. dfs를 이용해서 진행하였다. 📌  코드 설계하기1. 부피 A, B, C를 입력 받는다. 2. dfs를 호출한다.- 방문한 물병을 체크한다. (무한루프 방지)- 가능한 물통의 양을 result에 저장한다.- 물이 이동할 수 있는 경우의 수 6가지에 대해 dfs를 재귀적으로 호출하고 A의 물의 양이 0이 되면 종료한다.3. 결과를 정렬하고 중복을 제거한다.4. 결과를 출력한다. 📌 .. 2024. 8. 12.
[BOJ] 단지번호붙이기 Link: https://www.acmicpc.net/problem/2667Level : S1유형 : dfs, bfs📌 문제 탐색하기n (5  이 문제는 지도의 각 위치(점)에서 4방향(상,우,하,좌) 방향으로 탐색하며 연결된 집을 찾는 문제이다. 시간 복잡도를 계산해보면 O(n^2)이 나오지만 값이 크지가 않다.25*25*4를 하면 2,500이 나온다. 4방향을 탐색하며 인접한 집을 세는 경우이므로 bfs/dfs로 문제를 해결할 수 있다. 필자는 bfs로 문제를 해결하였다. 📌  코드 설계하기1. 지도의 크기를 입력으로 받는다.2. 지도의 크기만큼 배열의 값을 입력 받아 지도를 만든다.3. 지도의 크기만큼 (n*n) 반복문을 돌며 bfs를 진행한다.- 이때, 반복문이 돌 때마다 인접한 집의 개수를 .. 2024. 8. 11.