자료구조와 알고리즘/Baekjoon 15

[백준][Python] 13300번: 방 배정

https://www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 주어진다. 다음 N 개의 각 줄에는 학생의 성별 S와 학년 Y(1 ≤ Y ≤ 6)가 공백으로 분리되어 주어진다. 성별 S는 0, 1중 하나로서 여학생인 경우에 0, 남학생인 경우에 1로 나타낸다. www.acmicpc.net 문제 정보 초등학교에서는 단체로 2박 3일 수학여행을 가기로 했다. 여러 학년이 같은 장소로 수학여행을 가려고 하는데 1학년부터 6학년까지 학생들이 묵을 방을 배정해야 한다. ..

[백준][Python] 11328번: Strfry

https://www.acmicpc.net/problem/11328 11328번: Strfry 문제 C 언어 프로그래밍에서 문자열(string)은 native한 자료형이 아니다. 사실, 문자열은 그저, 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진 문자열일 뿐이다. 하지만 프로그래밍 언어에서 문자열을 다루는 것은 매우 중요하기 때문에, C 표준 라이브러리는 문자열을 다루는 데에 매우 유용한 함수들을 제공하고 있다 : 그들 중에는 strcpy, strcmp, strtol, strtok, strlen, strcat 가 있다. www.acmicpc.net 문제 요약 strfry 함수는 입력된 문자열을 무작위로 재배열하여 새로운 문자열을 만들어내는 함수이다. 두 개의 문자열에 대해, ..

[백준][Python] 10808번: 알파벳 개수

https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. 풀이 1 2 3 4 5 6 7 8 9 str = input() result = [0] * 26 for i in range(str): result[ord(i) -..

[백준][Python] 2439번: 별 찍기 - 2

https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 별 찍기 - 1과 같이 풀면 된다! 오른쪽 아래에 삼각형이 있다. 이 때, i와 j의 규칙은 무엇일까? 오른쪽 아래에 있는 삼각형의 빗면에 있는 별들은 모두 i와 j의 합이 같고, 그 보다 오른쪽 아래에 있는 별들은 빗변의 i, j보다 더 큰 값들을 가진다! 123456789N = int(input()) for i in range(N): for j in range(N): if (i+j >= N-1): print("*", end='') el..

[백준][Python] 2438번: 별 찍기 - 1

https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 나도 처음에는 아래와 같이 풀었었다. 물론 상관은 없다. 하지만, 별 찍기 문제가 존재하는 이유는 이중 반복문을 이해시키기 위해서이다. 그리고 아래처럼 풀면 별 찍기 문제가 어려워질수록 풀기가 힘들어진다는 사실! (나도 이렇게 풀다가 어려워서 검색해보다가 알게되었다.) 1 2 3 4 N = int(input()) for i in range(1, N+1): print("*" * i) cs 아래의 풀이가 정석인데, N을 입력 받았을 때 N x N 크기의 정사각형이 있다고 생각하고, i 는 행의 번호, j는..

[백준][Python] 10804번: 카드 역배치

https://www.acmicpc.net/problem/10804 10804번: 카드 역배치 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. www.acmicpc.net 리스트를 역순으로 정렬하는 건 파이썬이 쉽게 떠올라서 파이썬으로 풀었다. 근데 이상한 게 있다.. 1 2 3 4 5 6 7 8 9 10 11 12 list = [] for i in range(1,21): list.append(i) for i in range(10): a, b = map(int, input().split()) temp = list[a-1:b] temp = reversed(temp) list[a-1:b] = temp ..

[백준][C++][Python] 2577: 숫자의 개수

https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net 이 문제의 풀이도 개발자 지망생님의 블로그에서...! C++ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int a, b, c; cin >> a >> b >> c; int result = a*b*c; int arr[10] = {0}; while(r..

[백준][C++] 10093번: 숫자

이것을 보고 A, B의 자료형은 long long이어야 한다는 것을 몰랐따! int형은 21억(2.1X10의9승)정도까지 표현가능하고, long long형은 (9.2X10의 18승)까지 표현가능하다고 한다. 그래서 분명 잘 풀었는 데 왜 안되나.. 해서 또 구글링..을 했더니 long long으로 되어있었당.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include #include #define N 100000 using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); long long A,B; cin >> A >> B; if (A ..

[백준][C++] 2309번: 일곱 난쟁이

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 처음 문제를 봤을 때: 와..키의 합이 100이 되는 7명을 어떻게 찾지.. 라고 생각하면서 더했을 때 100이 된다는 것만 생각해서 도저히 실마리가 보이지 않았다. 그래서 역시 구글링.. 실마리는 빼기에 있었다..! 9명에서 2명을 뺐을 때 나머지 7명의 키가 100이면 되는 것이지 않는가! 개발자 지망생님의 블로그에서 본 풀이인데 나도 개발자 지망생님처럼 실력있는 지망생이 되고 싶다는 생각이 들었다. ..

[백준][C++] 2490번: 윷놀이

이 문제도 복잡하게 풀어놓고 더 간단한 풀이를 보기 위해 구글링해서 알아낸 풀이를 퍼옴! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); for (int i = 0; i a, s += a; switch (s) { case 0: puts("D"); break; case 1: puts("C"); break; case 2: puts("B"); break; case 3: puts("A"); break; case 4: puts("E"); } } } Colored by Color Scripter cs 난 처음에 이중반복문을 쓰지 않고 따로 입력받고..