링크 : https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 문제 소요시간: 17분 19초 설계하기(접근방법) 1. 입력받기 더 이상 입력이 없을 때까지 입력받는다 2. 해석 이 문제의 핵심은 작은 수를 후순위에 두는 것이다. 어차피 받지 못하는 팁이라면 ex)7번째 순서라고 했을 때 1 - 6 = -5 6 - 6 = 0 1원과 6원은 같은 취급을 받는다. 즉 음수는 가능한한 작게 해도 0으로 취급받기 때문에 작은 수들을 뒤에 몰..
링크 : https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 문제 소요시간: 30분 실패 설계하기(접근방법) 1. 입력받기 2. 구현 가장 중요한 고려 사항은 2가지이다 1. 외부 배열을 어떻게 돌릴 것인가? 2. 외부 배열 내부의 조그만 배열은 어떻게 고려할 것인가? 1번은 한칸씩 꼬리를 물며 구현하면 된다 2번은 그림을 그려 규칙을 찾았는데 n,m중에..
링크 : https://www.acmicpc.net/problem/2615 2615번: 오목 오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호 www.acmicpc.net 문제 소요시간: 설계하기(접근방법) 1. 오목 리스트 입력받기 2. 구현 전수검사를 해야될 것이다 오목을 만드는 방식은 3 가지가 있다 1) 가로로 5개 2) 대각선 오른쪽 아래로 5개 3) 세로로 5개 4) 대각선 오른쪽 위로 5개 하지만 육목 이상은 오목이 아니기 때문에 조건에서 제외해야 한다 또한 만약 리스트의 범위가 벗어나면 try: except : IndexError를 통해 에러..
링크 : https://www.acmicpc.net/problem/15787 15787번: 기차가 어둠을 헤치고 은하수를 입력의 첫째 줄에 기차의 수 N(1 ≤ N ≤ 100000)과 명령의 수 M(1 ≤ M ≤ 100000)가 주어진다. 이후 두 번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. www.acmicpc.net 문제 소요시간: 38분 40초 설계하기(접근방법) 1. 기차의 수와 명령어 수를 입력받는다 2. 명령어 구현 명령 1 입력 : 1 i x i 번째 기차에 x번째 좌석에 태워라 -> i-1번째 인덱스를 1로 변경 명령 2 i 번쨰 기차의 x번째 좌석 승객을 하차시켜라 -> i-1 번째 인덱스를 0으로 변경 명령 3 i번재 기차에 0을 인덱스[0]에 insert하고 마지막 인덱스..
링크 : https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 문제 소요시간: 시간 많이 소요됨 설계하기(접근방법) 1. 입력받기 1) t를 입력받는다 2) n, d를 입력받는다 3) 배열을 입력받는다. 2. 구현 해석 문제 해석이 어려워 보일 수 있지만 배의 키를 45도 돌린다고 생각하면 된다. 1) 배열 구성 총 4개의 배열이 돌아간다 Ex) n = 5 1) 좌상우하 arr[j][j] -> [0,0], [1,1], [2,2], [3,3].... 2)중간 상하 arr[0][2] arr[1][2] ar..
링크 : https://www.acmicpc.net/problem/22858 22858번: 원상 복구 (small) 수가 적혀있는 $P_1, P_2, ..., P_N$ $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 $D_1, D_2, ... , D_i , ... D_N$ 가 있다. 이때 $D_i$는 $P_{D_i}$ 값을 $i$ 번째로 가지고 오는 것을 의미한다. 이러한 www.acmicpc.net 문제 소요시간: 30분 12초 설계하기(접근방법) 1. 입력받기 1) 카드의 개수 n과, 섞은 횟수 k 2) k 번 섞은 후의 카드의 배를 의미하는 Si 가 N개 주어짐 3) N개의 Di가 공백으로 주어짐 2. 구현 및 해석 1) 예시 해석 1 번째 (i = 1) : D1 = 4, P4 = 3,..
링크 : https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 소요시간: 40분 12초 설계하기(접근방법) 1. 문자열을 입력받는다 2. 구현 1)괄호 내의 문자열은 그대로 출력한다 '' 가 올때까지 new_char에 문자를 더해주고, '>' 가 오면 flag = 0 으로 해준다 2)괄호가 없는 문자열은 공백으로 구분되며, 각각의 문자열을 뒤집는다. flag = 0일 때 temp_char 에 문자를 더해준다 ' ..
링크 : https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 문제 소요시간: 12분 10초 설계하기(접근방법) 1. n과 파일들을 입력받는다 2. 구현 1) 먼저 파일 확장자를 split()함수를 통해 분리한다 2) 파일 확장자가 dic 내에 있으면 +=1을 해주고, 없다면 새롭게 확장자를 추가해준다 3) dic.items()를 통해 키와 밸류를 리스트로 가져와주고, 정렬한다 3. 형식에 맞게 출력한다 코드(출력) import sys input = sys..