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

2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 문제코드
https://www.acmicpc.net/problem/3029 3029번: 경고 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, 초) hh는 0보다 크거나 같고, 23보다 작거나 같으며, 분과 초는 0보다 크거나 같고, 59보다 작거나 같다. 둘째 줄에는 나트륨을 던질 시간 www.acmicpc.net 문제 문제풀이
문제 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 요약 N개의 정수로 된 수열에서 부분 수열을 뽑아낸 뒤, 부분 수열의 원소를 모두 더한 값이 입력값과 같은 경우의 수를 구하는 문제 문제 풀이 algorithm 헤더에 있는 prev_permutation() 함수를 사용했다. 이 함수를 사용한 이유는 다음과 같다. 중복 없이 N개의 정수로 된 수열을 조합하기 위해서 부분 수열의 원소 개수를 (1 ~ N)개까지 두고 조합하기 위해 먼저 N개의 정수로 된 수열을 벡터에 ..
15657번: N과 M (8) (acmicpc.net) 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 소스코드 문제풀이 자연수의 수 n과 n개의 자연수 중 고르게 될 자연수의 수 m을 입력 받음 n개의 자연수를 리스트로 입력 받음 고른 수열은 비내림차순이어야 하므로 리스트를 오름차순으로 정렬 자연수를 하나씩 append 또는 pop 할 것이므로 정답이 될 수열을 가지고 있을 빈 배열 생성 조건을 만족하는 수열을 생성해줄 fun() 함수 입력 받은 자연수 리스트 내에서 반복 정답인 수열을 가지고 있을 ..
https://www.acmicpc.net/problem/16955 16955번: 오목, 이길 수 있을까? 구사과와 큐브러버는 10×10 크기의 바둑판에서 오목을 하고 있다. 턴은 구사과가 먼저 갖는다. 바둑판의 상태가 주어진다. 구사과가 턴을 한 번 더 가졌을 때, 이길 수 있는지 구하는 프로그램을 www.acmicpc.net 문제 코드 문제 풀이 함수를 사용하여 1) 좌측 위 + 우측 아래, 2) 가운데 위 + 가운데 아래, 3) 우측 위 + 좌측 아래, 4) 좌 + 우 의 좌표를 비교함. 반복문을 실행, x,y = 0,0 부터 x,y = 10,10 까지 '.' 인 좌표를 찾아서 그 좌표를 'X' 로 바꿔주고, 그 좌표를 포함하여 연속된 'X' 5개가 완성되는지 확인함. 한 좌표에서 모든 함수를 돌았..
https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 코드 코드해설 이 문제는 숫자들을 입력 받은 후 조합을 이용해 나올 수 있는 경우들의 합을 구해준다. 그 후 그 합이 우리가 원하는 숫자와 같다면 cnt변수를 하나씩 증가시키면서 마지막에 일치하는 경우를 출려해주면 된다.
문제 코드 p=list(input()) for i in range(len(p)): if ord(p[i])=65: #대문자 p[i]=chr((ord(p[i])-65+13)%26+65) elif ord(p[i])=97: #소문자 p[i]=chr((ord(p[i])-97+13)%26+97) else: p[i]=p[i] print(''.join(p)) 풀이 문자열을 입력받고 조건에 따라 13을 더해주기 위해 아스키코드로 바꿔주고 13 더해주고 26 나머지로 보고 다시 알파벳으로 바꾼다
문제 https://www.acmicpc.net/problem/1718 코드
https://www.acmicpc.net/problem/11655 문제 ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다. 예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"가 된다. ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 된다. 앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"가 된다. ROT13은 알파벳 대문자와 소문자에만 적용할 수 있다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다. 예를 들어, "One is 1"을 ROT13으로 암호화하면 "Ba..
문제 https://www.acmicpc.net/problem/2309] 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net Algorithm 입력으로 받은 값들을 중 두 개의 값을 뽑을 떄 그 두 개의 합을 입력값의 총합에서 뺏을 때 100이 되는 값들을 찾고 전체 값에서 그 두개의 값을 제거한다. Code from collections import deque from itertools import combinations as cb input = __import__('sys').stdin.readline heights ..
문제 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 문제 설명 학생들의 국어, 영어, 수학 점수를 특정 조건에 맞게 정렬한 뒤 학생 이름을 순서대로 출력하는 문제 코드 #include #include #include #include #include #include #include using namespace std; typedef struct{ int kor, eng, math; string name; }student; bool sortFunc (student A, student B) {..
15650번: N과 M (2) (acmicpc.net) 코드 코드설명 본 문제는 '수열과 조합'에서 조합을 묻는 문제로 from itertools import combinations 을 활용해 1 ~ n 까지의 자연수 에서 m 길이 만큼의 조합을 출력하는 문제다. 하지만, 이는 '재귀함수'을 이용해서도 풀이가 가능하다. go() 함수는 리스트 arr을 입력 받았을 때 len(arr) == m 일 시 리스트 arr를 출력하고, len(arr) != m 일 시 리스트 arr에 자연수 i을 추가하는 함수이다. 여기서 리스트 arr를 출력하고 '재귀적인 방법'을 사용했기에 함수 내 함수를 출력한 곳으로 return 한다. for 문에서 재귀 함수를 이용해 풀이 시 조건문을 활용해 리스트 arr가 1) '비어 있..
KauKoala
'Koala - 9기/기초 알고리즘 스터디' 카테고리의 글 목록 (2 Page)