분류 전체보기 108

백준 1342번 C++

https://www.acmicpc.net/problem/1342 1342번: 행운의 문자열 민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작 www.acmicpc.net 보자마자 생각난 것 : color graph! 알고리즘 수업 열심히 들은 보람이 있다고 생각했다 ㅋㅋㅋ 교수님 보고 계십니까?!! 앞으로 엘베에서 마주치면 90도로 인사박겠습니다!!! 하하 암튼 나한테 휴학은 없으니까 내년 그니까 3학년 1학기 시험기간이 돌아올 때 까지 1일 1백준 다시 레츄고 애들아 열심히 하자... 생각 행운의 문자열인지 확인하는 방법 (Find 함수로 따로 만들자!) 1. 인접한..

백준 2023.12.23

백준 10819 C++

https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net + C++의 next_permutation 함수를 사용하면 더 쉽게 풀 수 있다! 하지만 난 안 썼음 생각 1. 계산하고 비교하면서 큰 것만 남긴다! 근데 진짜 어떻게 해야할지 모르겠어 배열의 크기 제한이 8까지니까!! 작으니까 뭔가 하면 될 것 같아 코드 초안 int N, ans; int arr[9]; int result(){ // 일케 계산하는 함수를 따로 만들고! int result = 0; for(int..

백준 2023.11.27

백준 1182 C++

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 나 난독 있나봐... 생각 숫자가 들어가는 경우 / 안들어가는 경우로 나눠 dfs를 돌리자 1. sum += arr[1]; 2. sum = sum; 코드 초안 약간 이런 느낌 void dfs(int k, int sum){ for(int i=0 ; i main에서 S가 0일때만 공집합을 하나 빼주자~ 2. if 처리를 어떻게 해야할지 모르겠음!!! -> 그냥 fo..

백준 2023.11.26

백준 15649 C++

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 정답 코드 #include using namespace std; int N, M; int arr[9]; bool visited[9]; void dfs(int k){ if (k == M){ for (int i = 0; i M; dfs(0); } visited 배열은 0부터 시작해도 상관 없는데 arr에 저장할 땐 +1을 해줘서 1부터 N까지 자연수 중에서 중복 없이..

백준 2023.11.24

백준 9663 C++

https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 퀸이 서로 공격할 수 없게 놓는 방법 : 같은 행 / 같은 열 / 같은 대각선 상에 위치하지 않아야 한다. (최지웅 교수님한테 배운 ㅎ) 생각 1. 백트래킹 문제니까 되추적 알고리즘을 쓴다 1.1. 상태 조건 트리를 어떻게 구성할 것인가? -> 트리까지 그릴 필요는 없는 문제인듯 아닌가 하하 1.2. promising 조건을 뭘로 할 것인가? -> 행 / 열 / 대각선이 겹치는지 확인하기 1차원 배열을 써도 되는..

백준 2023.11.23

백준 2231 C++

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 생각 1. 1부터 커지면서 분해합 비교 (최대 N까지 비교) 2. 하나하나 분해하는 방법을 어떻게 구현 할 것인가??? 2.1. N을 string으로 변환하여 하나씩 받아오기... 미친짓이다 2.2. 10으로 나눠서 자리수 나누기!!! 아는 거 쓰자! //i는 for문으로 1부터 커지도록 함 while(i != 0){ sum += i % 10; i /= 10; } 정답..

백준 2023.11.22

백준 7568 C++

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net #include #include #include using namespace std; int main(){ int N, num1, num2; cin >> N; int arr[N] = {0}; vector v; //입력 for(int i = 0 ; i> num1 >> num2; v.push_back(pair (num1, num2)); } for(int i = 0 ; i

백준 2023.11.22

백준 1018 C++

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 와 문제 이해를 못해서 하루종일 헤맨 문제... 그냥 어지간히 안풀린다 싶으면 문제 이해를 위해서라도 검색을 해보자 ㅎ 생각 1. 비교를 할 WB / BW 체스판을 미리 만들어 두고 비교를 하자 2. 여기서 키포인트는 한 번만 비교를 하는게 아니라 움직여가면서 비교를 하는 것! #include #include using namespace std; string WB[8] = { "WBWBWB..

백준 2023.11.18

백준 9093 C++

https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net #include #include using namespace std; stack s; int main() { int T; char input; cin >> T; for(int i=0 ; i> input; if (input == ' ' || input == '\n'){ while(!s.empty()){ cout cin.get() 을 쓴다! 2. 엔터를 무조건 출력하는 문제 -> cin.ign..

백준 2023.11.16
728x90