Koala - 5기/기초 알고리즘 스터디

https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문제분석 알파벳을 13개씩 밀어서 출력하는 문제이다. 알파벳이 아닌 문자는 그대로 출력하고 알파벳은 13개씩 출력하는데, 만약 13개를 민 알파벳이 z를 넘어갈 경우, a부터 시작해야 한다. 코드 n = input() for i in n: if 97
문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. N장의 카드에 써져 있는 숫자가 주어졌을 때, ..
https://www.acmicpc.net/problem/14247 14247번: 나무 자르기 영선이는 나무꾼으로 나무를 구하러 오전에 산에 오른다. 산에는 n개의 나무가 있는데, 영선이는 하루에 한 나무씩 n일 산에 오르며 나무를 잘라갈 것이다. 하지만 이 산은 영험한 기운이 있어 www.acmicpc.net 문제 해석 n개의 나무가 존재한다. 하루에 한그루씩 n일동안 나무를 잘라 얻을 수 있는 최대 길이를 구하는 문제이다. 코드 input = __import__('sys').stdin.readline n = int(input()) arr = [] ans = 0 a = list(map(int,input().split())) b = list(map(int,input().split())) for i in ..
https://www.acmicpc.net/problem/16955 16955번: 오목, 이길 수 있을까? 구사과와 큐브러버는 10×10 크기의 바둑판에서 오목을 하고 있다. 턴은 구사과가 먼저 갖는다. 바둑판의 상태가 주어진다. 구사과가 턴을 한 번 더 가졌을 때, 이길 수 있는지 구하는 프로그램을 www.acmicpc.net 문제분석 누구나 쉽게 알 수 있는 오목게임이다. 구사과와 큐브러버는 10x10크기의 바둑판에서 오목을 하고 있다. 턴은 구사과가 먼저 갖는데, 바둑판의 상태가 입력으로 주어지고 구사과가 턴을 한 번 더 가졌을 때, 즉, 한 수를 두었을 때 이길 수 있는지 구하는 프로그램을 작성해아한다. 오목의 승리 룰은 가로,세로 대각선 방향 중 하나에서 자신의 돌이 5개 이상 연속하는 것이다...
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net n,m=map(int,input().split()) def Dfs(arr): if len(arr)==m: print(' '.join(map(str,arr))) return for i in range(1,n+1): if i not in arr: arr.append(i) Dfs(arr) arr.pop() se=[] Dfs(se) 중복없이 골라야 하는게 핵심이다. 백준을 보니 n과m 이라고 써진 문제..
https://www.acmicpc.net/problem/14623 14623번: 감정이입 첫 번째 줄에 입력으로 주어진 두 이진수 B1, B2의 곱을 이진수로 출력한다. 출력하는 이진수 앞에 불필요한 0이 붙으면 안 됨에 주의해야 한다. 즉 출력하는 이진수의 시작은 항상 1이어야 한다. www.acmicpc.net a=list(input()) b=list(input()) se=[0]*(len(a)+len(b)) for i in range(len(b)): for j in range(len(a)): se[i+j+1]+=int(a[j])*int(b[i]) t=0 for i in range(len(se)-1,-1,-1): se[i]+=t if se[i]>1: a=se[i] se[i]=se[i]%2 t=a//2..
문제 https://www.acmicpc.net/problem/15905 15905번: 스텔라(STELLA)가 치킨을 선물했어요 경인지역 6개대학 연합 프로그래밍 경시대회 shake! 는 아주대학교, 경희대학교, 성균관대학교, 인하대학교, 한국항공대학교, 한양대학교ERICA가 함께하는 대학교 자체 연합 대회이다. shake! 는 매 www.acmicpc.net 풀이 입력값을 받아 이차원 리스트로 만든 후, sort와 익명함수를 이용하여 해결한 문제가 높은 순으로, 같다면 패널티가 낮은 순으로 정렬한다. 반복문을 통해 정렬된 리스트의 5번째 리스트의 첫번째 값인 점수와 같은 값을 갖고, 두번째 값인 패널티보다 낮은 값을 갖는 리스트의 개수를 세어 출력한다. 코드 N = int(input()) arr = [..
문제 체스판은 8×8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 8개의 줄에 체스판의 상태가 주어진다. ‘.’은 빈 칸이고, ‘F’는 위에 말이 있는 칸이다. 출력 첫째 줄에 문제의 정답을 출력한다. 예제 입력 1 .F.F...F F...F.F. ...F.F.F F.F...F. .F...F.. F...F.F. .F.F.F.F ..FF..F. 예제 출력 1 1 [ 문제 분석 ] 8*8짜리 정사각형 체스판이 주어져 있고, 첫번째 (0.0)칸을 기준으로 흰색, 검정색 칸이 번갈아 나타난다. 체스판의 상태를 입력하면, 흰색 칸 위에 말이 몇개..
https://www.acmicpc.net/problem/5533 5533번: 유니크 첫째 줄에 참가자의 수 N이 주어진다. (2 ≤ N ≤ 200) 둘째 줄부터 N개 줄에는 각 플레이어가 1번째, 2번째, 3번째 게임에서 쓴 수가 공백으로 구분되어 주어진다. www.acmicpc.net 문제분석 2차원 리스트로 입력받아 for문을 이용해 숫자를 비교한다. n = int(input()) score = [[], [], []] sum = [] for i in range(n): a, b, c = map(int, input().split()) score[0].append(a) score[1].append(b) score[2].append(c) for i in range(n): get = 0 for j in ra..
https://www.acmicpc.net/problem/8611 8611번: 팰린드롬 숫자 \(n\)을 \(2, 3, \dots, 10\) 진법으로 나타냈을 때, 팰린드롬인 경우가 없다면, "NIE"를 출력한다. 그 외의 경우에는 팰린드롬이 되는 진법 \(b\)와 \(n\)을 \(b\)진법으로 나타낸 수 \(m\)을 출력한다. 출력은 www.acmicpc.net 문제 코드 #include using namespace std; #include #define PI 3.141592653589793 #define ll long long int main(void) { ios::sync_with_stdio(0); cin.tie(0); ll n; cin >> n; ll st = n; int cnt=0; for (i..
https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해석 N개의 수가 주어지고 이를 오름차순으로 정렬하는 프로그램이다. 코드 input = __import__('sys').stdin.readline n = int(input()) arr = [0] * 10001 for _ in range(n): t = int(input()) arr[t] += 1 for i in range(10001): if arr[i] != 0: for j in range(arr[i]): pri..
https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제분석 2차원 리스트를 입력으로 받고 그 때의 최댓값과 최댓값의 인덱스를 출력하는 문제이다. 최댓값 인덱스를 출력할 때 처첫번째 인덱스의 시작이 0이 아닌 1로 시작해야한다는 점에 주의해야한다. 코드 s = [map(int, input().split()) for _ in range(9)] m = 0 c = 0 for i in s: c += 1 r = 0 for j in i: r += 1 if j>m: m = j a..
KauKoala
'Koala - 5기/기초 알고리즘 스터디' 카테고리의 글 목록 (2 Page)