전체 글

항공대 알고리즘 동아리 Koala 🥰
https://www.acmicpc.net/problem/1316 문제 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다. 출력 첫째 줄에 그룹 단어의 개수를 출력한다..
https://www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 0. 잡담 아이고 로직은 맞았는데 입력 범위가 매우 커서 7트만에 맞았습니다!!를 받았습니다. 만약 알 수 없는 문제로 10%에서 계속 틀리신다면 코드의 모든 부분에 마음 편하게 unsigned long long 자료형을 써보세요. 혹시 답을 보고 푸셨다면 이곳에서 다시 풀어보시면 좋을 것 같습니다. 동일한 문제에 입력 값이 백준보다 작습니다. https://school.progra..
https://www.acmicpc.net/problem/17502 17502번: 클레어와 팰린드롬 입력으로 주어진 문자열을 팰린드롬이 되도록 '?' 문자들을 적절한 알파벳 소문자들로 바꾸어 출력합니다. 방법이 여러 가지인 경우 그 중 하나만 출력합니다. www.acmicpc.net 문제 코드 문제 풀이 a를 받아 먼저 a의 길이가 홀수인지 확인, 홀수인 경우 가운데 문자는 상대되는 짝이 없으므로, 이것이 "?" 라면 이것을 다른 문자로 바꾸어 줌. 다음으로 for 문을 통해 문장 a를 반복. 만약 a[i] 가 "?" 라면, 그에 상대되는 a[-i-1] 도 "?" 인지 확인. 둘 다 "?" 라면 이 둘을 동일한 다른 문자로 바꾸어줌. 만약 a[-i-1] 이 "?" 가 아니라면, a[i] 를 a[-i-1]..
첫 번째 시도 input = __import__('sys').stdin.readline d = dict() for _ in range(int(input())): n = input() if n in d.keys(): d[n] += 1 else: d[n] = 1 max_value = max(list(d.values())) pos_keys = list() neg_keys = list() for i in d.keys(): if int(i) > 0: pos_keys.append(i) pos_keys.sort() if int(i)
https://www.acmicpc.net/problem/2828 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M> 오른쪽 기준으로 N칸 이 세가지 경우를 생각하면 이동해야할 최소 거리를 구할 수 있다.
문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제 풀이과정 사용자로부터 정수 n을 입력 받은 후 n번 만큼 for 루프를 돌리며 입력을 받는다. 가장 많이 입력된 책을 찾기 위해 책의 이름을 key값으로 두고, 책의 갯수를 value로 두는 딕셔너리를 이용한다. 그 후 다시 for 루프를 돌리며 가장 큰 값을 가지는 key를 찾아 ans리스트에 추가한 후, 이걸 정렬하여 가장 첫번째 요소가 출력되도록 한다. 개선방안 처음 이 문..
https://www.acmicpc.net/problem/1673 1673번: 치킨 쿠폰 강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환 www.acmicpc.net 문제분석 입력으로 주어지는 것: 현재 갖고있는 치킨쿠폰 개수, 치킨쿠폰 하나로 교환할 수 있는 도장의 개수(k) 출력: 최대로 먹을 수 있는 치킨의 개수 문제풀이 재귀함수를 이용해서 문제를 해결 하였다. (현재 갖고있는 쿠폰 수, k, 현재 까지 먹은 치킨의 개수)를 입력받고 함수안에서는, 한 프로세스에서 새로 생기는 쿠폰을 포함한 현재 갖고있는 쿠폰 수를 계산하고, 지금 프로세스에서 먹은 치킨을..
https://www.acmicpc.net/problem/6502 문제 대전 ACM-ICPC Regional가 끝나면, 대회 참가자들은 다같이 카이스트 근처의 동혁 피자에 간다. 대회는 5시간동안 진행되므로, 참가자는 모두 배가 매우 고프다. 피자를 최대한 빨리 먹기 위해서, 큰 피자를 하나 시키려고 한다. 생각해보니 피자가 너무 크면 식탁 위에 맞지 않을 수도 있다. 식탁은 원이고, 피자는 직사각형이다. 식탁의 반지름과 피자의 크기가 주어졌을 때, 피자가 식탁에 맞는 크기인지 아닌지를 구하는 프로그램을 작성하시오. 문제 코드 문제 풀이 r에 0이 입력되기 전까지 무한반복 되는 while 문을 작성함. 그 후 w, l을 입력받음. 문제에서 말하는 테이블 안에 피자가 놓여지기 위해서는 피타고라스 정리에 의..
www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 코드 let input = require('fs').readFileSync('/dev/stdin').toString().toLowerCase(); const result = new Array(26).fill(0); for (let i = 0; i
https://www.acmicpc.net/problem/14724 14724번: 관리자는 누구? PROBRAIN, GROW, ARGOS, ADMIN, ANT, MOTION, SPG, COMON, ALMIGHTY중 동문 커뮤니티 관리자로 선발되는 후보가 소속한 동아리의 이름을 대문자로 출력한다. www.acmicpc.net 문제 소스코드 풀이 이 문제를 봤을 때 동아리 순서도 정해져있고, 후보를 뽑는 것도 max를 뽑기 때문에 리스트를 여러개 이용하면 풀 수 있을 것 같다는 생각이 들었다. 리스트안에 for문을 이용하는 컴프리헨션도 써서 간결하게 풀 수 있었다.
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 코드 from itertools import accumulate from collections import deque input = __import__('sys').stdin.readline n, s = map(int, input().split()) li = list(accumulate(list(map(int, input().split())))) li = deque(li) li.ap..
문제 링크 https://www.acmicpc.net/problem/1673 문제 문제 해석 도장과 쿠폰을 이용해서 치킨을 몇 마리까지 먹을 수 있을지 계산하는 문제입니다. 처음 문제를 풀 때, 도장과 쿠폰의 관계를 잠시 헷갈려서 문제를 푸는데 어려움이 있었네요. 코드 #include #include using namespace std; int chicken, n, k, stamp = 0; int main() { while (scanf("%d %d", &n, &k) != EOF) { chicken = 0; stamp = 0; while (1) { chicken += n; stamp += n; n = 0; n += stamp / k; stamp = stamp % k; if (n == 0) { break; ..
KauKoala
Koala