컴퓨터기본 141

[백준] 15649번: N과 M(1)

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트랙킹 알고리즘을 사용하면 된다고 한다. 백트랙킹 알고리즘은 가능한 Decision Space를 검토하면서 불가능한 상황들을 제거해 나가는 방식이다. 잘 이해는 안되고, 보통은 recursive한 문제풀이를 이용한다고 한다. 작성 코드 #include using namespace std; int N, M; int visited[9]; int ans[9]; void Check(int cnt){ ..

[백준] 10814번: 나이순 정렬

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 문제 이해 1. 나이 증가하는 순으로 정렬 2. 나이가 같으면 먼저 가입한 사람 순으로 정렬 정렬 함수를 위의 기준으로 만들면 되는데, 먼저 가입한 순서, 나이, 이름을 저장해야 해서 이중 pair를 사용했다. 작성 코드 #include #include #include #include using namespace std; int N; vector v; bool compare(pair a, pair b)..

[백준] 1181번: 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 이해 이것도 그냥 compare함수를 잘 설계하면 되는 문제이다. 작성 코드 #include #include #include #include using namespace std; int N; vector v; bool compare(string a, string b){ if(a.length() < b.length()) return true; else if(a.length() == ..

[백준] 11651번: 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 이해 https://chagaun-omija.tistory.com/143 [백준] 11650번: 좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어..

[백준] 11650번: 좌표 정렬하기

https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 이해 아주 간단한 sort문제로 기본 sort()함수를 사용하되, 비교 함수를 짜서 넣어주면 된다. 작성 코드 #include #include #include using namespace std; int N; vector v; bool compare(pair a, pair b){ if(a.first < b.first) return true..

[백준] 1436번: 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제 이해 Brute-force한 방식으로 모든 숫자를 시도해보면 된다. 모든 숫자를 돌면서 연속으로 6이 있는지를 확인하면 된다. 작성 코드 작성 언어: C++ #include int N; int arr[10]; int continuous(int n){ int r = 0; for(int i = 0; i1){ if(arr[i] == 6 && arr[i-1] == 6 && arr[i-2] == 6..

[백준] 2447번: 별 찍기 - 10

https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 이해 작성 코드 #include void star(int n, int i, int j){ if(n==1) { printf("*"); return; } if(i%n/(n/3) == 1 && j%n/(n/3) == 1){ printf(" "); } else { star(n/3, i, j); } } int main(void){ int n; scanf("%d", &n); ..

[백준] 1427번: 소트인사이드

https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 이해 그냥 큰 정수의 각 자리수를 벡터에 저장했다가, 정렬해서 프린트하면 된다. 작성 코드 #include #include #include using namespace std; long long int N; vector v; int main(void){ int tmpN; int cnt = 0; cin >> N; tmpN = N; for(int i = 0; tmpN>0; i++){ v.push_back(tmpN%10); tmpN = tmpN / 10; cnt++; } sort(v...

[백준] 10809번: 알파벳 찾기

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net alp 이라는 각 알파벳에 대응하는 배열을 만들어두고, 이걸 looking table처럼 사용한다. #include #include using namespace std; int alp[26] = {-1, -1, -1, -1, -1, \ -1, -1, -1, -1, -1, \ -1, -1, -1, -1, -1, \ -1, -1, -1, -1, -1, \ -1, -1, -1, -1, -1..