전체 글

항공대 알고리즘 동아리 Koala 🥰
11719번: 그대로 출력하기 2 (acmicpc.net) 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net 문제 해석 어떤 문자를 입력하든 변형 되는 거 없이 그대로 출력하는 프로그램 작성하기. 코드 문제 풀이 EOF의 문제를 푸는 2가지 방법 중 try/except를 이용하는 방법으로 풀이했다. 주어진 문자를 EOF가 나오기 전까지 계속 try문으로 돌다가, EOF가 나오면 마지막에 작성한 EOFError 때문에 break문으로 빠지게 된다. 이 문제는 input()으로 값을 받고 바로 ..
https://www.acmicpc.net/problem/2535 2535번: 아시아 정보올림피아드 첫 번째 줄에는 대회참가 학생 수를 나타내는 N이 주어진다. 단, 3 ≤ N ≤ 100이다. 두 번째 줄부터 N개의 줄에는 각 줄마다 한 학생의 소속 국가 번호, 학생 번호, 그리고 성적이 하나의 빈칸을 사 www.acmicpc.net 문제분석 나라별 최대 메달 수가 두 개라는 점에 유의해야한다. 정렬을 한 뒤에 앞서 말한 조건에 유의하여 메달을 부여해야 풀 수 있는 문제이다. 정렬은 점수 순으로 정렬을 하고 먼저 2개의 메달을 메달을 부여한 뒤에 한 나라에 2개 이상의 메달이 부여되었는지를 확인한 뒤에 나머지 1개의 메달을 수여하여야 문제를 제대로 풀 수 있다 코드 input = __import__('s..
https://www.acmicpc.net/problem/9226 문제해석 1. 문자열 입력 변수 계속 입력 BUT '#' 입력시 종료 2. 문자열 맨 앞 문자가 모음(a, e, i, o, u) 여부에 따른 조건문 3. 맨 앞 문자가 모음이면, 문자열 맨 뒤에 'ay' 추가 4. 맨 앞 문자가 자음이면, 모음 나오는 지점 탐색 5. 그 지점 ~ 끝까지 + 처음 ~ 그 지점 출력 코드 문제풀이 1. 반복해서 입력 받을 문자열 변수(s) 사용 & while문 사용해서 '#' 입력 전까지 계속 입력 2. 입력 받는 문자열 input_list 리스트에 추가 1. input_list 리스트 요소 갯수 = 입력 받은 각 문자열 갯수: 리스트 요소 갯수 만큼 읽기 2. 문자열을 factor 변수에 복붙 3. 문자열 ..
14935번: FA (acmicpc.net) 14935번: FA 정수 x가 FA수 라면 FA를 출력하고, 아니라면 NFA를 출력한다. www.acmicpc.net 문제해석 입력 받은 수의 맨 앞자리와 자리수를 곱해서 나온 값을 다시 해당 함수에 넣어서 반복하는 문제이다. 계속 반복하여 수행하다 계속 동일한 결과가 나온다면 입력 받은 수를 FA수라고 한다. 코드 문제 풀이 계속 반복되는 return 값을 얻기위해 재귀함수를 이용하였다. main부분은 간단하게 x를 입력받고 출력하는 부분만 있으며 재귀함수인 recur함수는 먼저 인수 a의 맨 앞자리를 추출하기 위해 string으로 변환시켜 주었고 계산은 s[0]와 문자열의 길이를 곱하는 식으로 계산을 하였다. 만약 인수 a와 곱한 결과가 같다면 "FA"를 ..
https://www.acmicpc.net/problem/3181 3181번: 줄임말 만들기 꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다. 하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은 www.acmicpc.net 쓸모 없는 단어들을 no라는 리스트에 모아둔다. 공백으로 분할하여서 word라는 리스트에 문자들을 입력받는다. 첫 단어가 no리스트 중에서 나왔을 경우에는 중요한 것이므로 sh리스트에 넣기 위한 if문 사용한다. 다음부터는 no리스트 안에 있는 단어가 나올 경우 무시하고 no리스트 안에 없는 단어만 sh리스트에 넣는다. sh에 모인 단어들 중에서 맨 앞 알파벳을 대문자로 공백 없이 출력한다.
https://www.acmicpc.net/problem/11931 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 해석 숫자 배열을 입력받은 후 내림차순으로 정리 하여 출력해주는 문제이다. 코드 #include #include using namespace std; int a[100000]; int n; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i > a[i];..
https://www.acmicpc.net/problem/2947 2947번: 나무 조각 첫째 줄에 조각에 쓰여 있는 수가 순서대로 주어진다. 숫자는 1보다 크거나 같고, 5보다 작거나 같으며, 중복되지 않는다. 처음 순서는 1, 2, 3, 4, 5가 아니다. www.acmicpc.net 숫자 5개를 리스트로 입력 받고 for문으로 돌의 위치를 바꾼다 if문 안에 print를 만들어 위치를 바꿀때만 숫자를 출력하게 하고 숫자가 오름차순으로 모두 정리가 될때까지 while으로 반복한다
https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 문제 해석 간단히 수첩 2에 적혀 놓은 정수가 수첩 1에 적혀 있는지 찾는 문제이다. 코드 input = __import__('sys').stdin.readline t = int(input()) for k in range(t): n = int(input()) arr = list(map(int, input().split())) m = int(input()) isIn = list(map(int, input..
https://velog.io/@jay6768/BOJ-Python-2805-나무-자르기 백준 2805번 나무 자르기 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net Intro 기본적인 이분 탐색 문제. 목재절단기의 적합한 높이를 이분 탐색으로 범위를 좁혀가며 찾아야 한다. Solution 찾고자 하는 높이가 될 숫자를 임의로 정한다. 반복할 때마다 범위를 줄여가며 숫자를 다시 정한다. (mid) 해당 높이로 나무를 모두 자른다. 땅 밑으로 나무를 자를 수는 없다. (h)..
https://www.acmicpc.net/problem/3181 3181번: 줄임말 만들기 꿍은 만사가 귀찮아서 말을 하기도 귀찮아 한다. 그래서 하려는 말을 대신해줄 줄임말을 만들려고 하는데 나름 규칙을 만들었다. 하려는 말은 최소 하나 이상의 단어를 포함하는데 각 단어들은 www.acmicpc.net 문제해석 입력되는 문장에서 단어의 앞글자를 대문자로 하여 줄임말을 만든다. 단, 'i', 'pa', 'te', 'ni', 'niti', 'a', 'ali', 'nego', 'no', 'ili' 는 무시하나 맨처음으로 올 경우 줄임말에 포함한다. 코드 문제풀이 입력되는 문장을 공백마다 나누어 리스트에 저장한다. 그 후 리스트에 저장된 단어들중에 'i', 'pa', 'te', 'ni', 'niti', 'a..
11024번: 더하기 4 (acmicpc.net) 11024번: 더하기 4 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, N(1 ≤ N ≤ 100)개의 수가 공백으로 구분되어서 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 www.acmicpc.net 문제 해석 한 줄에 여러 수가 주어졌을 때, 같은 줄에 있는 수를 모두 더하는 프로그램 작성하기 코드 문제 풀이 먼저 변수가 주어졌을 때 입력 하는 함수를 입력한다. 그리고 반복문을 이용해서 list, split 함수를 이용해 숫자를 구분 가능하게 한다. 후에 마지막으로 숫자들을 모두 더해 출력하도록 코드를 입력했다.
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 분석 코드 #include #include #include using namespace std; int n, c,x; vector v; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> c; int num; for (int i = 0; i < n; +..
KauKoala
Koala