전체 글

항공대 알고리즘 동아리 Koala 🥰
14888번: 연산자 끼워넣기 (acmicpc.net) 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제분석 N개의 수로 이루어진 수열 A1, A2, ..., AN과 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자(+, -, *, /)가 주어졌을 때, 최대값과 최소값을 구하는 문제다. 이 때, 주어진 수의 순서는 바꿀 수 없고, 식의 계산은 연산자 우선 순위를 무시하고 앞에서부터 차례대로 진행해야 한다. - 입력: 첫째 줄에 수의 개수 N(2 ≤ N..
🔎 처음 시도 이중 포문으로 하나하나 비교하면 되겠지?라는 생각으로 모두 비교해줬는데, 이렇게 하면 입력이 한꺼번에 주어졌을 때 밀리는 현상 때문에 올바르게 판단을 못한다. 얘가 검사를 다할 때까지 sleep을 건다고 쳐도, 잘못된 알고리즘인 것같다는 생각이 들었다. 어쨌든 문자열을 보려면 모든 문자열을 다 확인해봐야 하는데,, 어떻게 할까 하다가 알게된 find 함수 str.find(찾고자하는 문자열) 형식으로 사용된다. 만약 값을 찾으면 str의 해당 인덱스가 반환되고, 없으면 -1을 반환한다. 🤔 두 번째 시도 cnt = 26 # 총 알파벳 개수 while True: sentence = input() sentence.replace(" ", "") if sentence == '*': break for..
문제 https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 코드 from itertools import combinations while True: no = list(map(int, input().split())) if no == [0]: break comb = list(combinations(no[1:], 6)) for i in comb: print(*i) print('') 풀이 주어진 숫자 리스트에서 6개의 숫자를 고르는 조합 문제이다..
https://www.acmicpc.net/problem/15917 15917번: 노솔브 방지문제야!! 어떤 수 a가 2의 거듭제곱꼴로 나타내어진다고 해 봅시다. 그렇다면, a = 2n (단 n ≥ 0인 정수) 를 만족할 겁니다. 보통, 각 비트별로 검사를 하면서, 켜져 있는 비트의 개수를 알아내는 것도 좋은 www.acmicpc.net 소스코드 input = __import__('sys').stdin.readline q = int(input()) for i in range(q): cnt=0 a = int(input()) if a == 1: cnt += 1 print(1) while a % 2 != 1: if a // 2 == 1: cnt+=1 print(1) break else: a = a // 2 i..
문제 문제 해석 x, y값의 부호에 따라 몇 사분면에 해당하는지 구하는 문제이다. 문제 풀이 x축과 y축은 사분면에 해당하지 않으므로 제외해준다. 사분면에는 총 4개의 사분면이 있으므로 총 4가지 경우로 나눠주기 위해 if-elif-else문을 이용한다. 맨 처음 x값과 y값을 받아야 하므로 int(input())을 써준다. 문제 코드
https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 퇴사[^1] 구현 과정 첫 번째 첫날을 무조건 선택하여 해당 일의 T를 얻어 그다음 가능한 모든 경우의 수를 탐색 구현도 엉망으로 하였고 무엇보다 깔끔하게 받아들여지지 않았다. 두 번째(외부 자료 참고 후) 첫 번째 했던 방식에서 연산을 무시할 경우와 연산에 대해 더 구체화하여 정의하였다 무시할 경우 : if ( i+t[i] ) > day 현재날과 해당 일의 소요일을 더하여 주어진 전체 요일과 크기를 비교한다 하나의 일이 제한된 기간에 수행이 가능함을 나타낸다 연산 : dp[i + t[i]] = max(dp[i + t[i]], dp[..
https://www.acmicpc.net/problem/2739 2739번: 구구단 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. www.acmicpc.net 문제 문제 해석 1과 9 사이의 자연수 N이 주어질 때 구구단 N단의 식과 그 답을 순서대로 출력하는 문제이다 문제 풀이 변수 n을 정수로 입력받은 뒤 n * i = ans 형식으로 출력하면 된다. 이 때이때 i가 1부터 9까지 반복되므로 반복문 for을 이용하였다. 이때 range 함수를 이용해 1부터 (10-1)까지의 범위를 입력할 수 있다. 출력문은 숫자와 문자로 이루어져 있으므로 콤마로 구분해주고, 문자에는 따옴표를 붙여 컴파일 오류가 나지 않도록 해준다. * print부분의 코드를 ..
https://www.acmicpc.net/problem/6443 6443번: 애너그램 첫째 줄에 단어의 개수 N 이, 둘째 줄부터 N개의 영단어가 들어온다. 영단어는 소문자로 이루어져 있다. 단어의 길이는 20보다 작거나 같고, 애너그램의 수가 100,000개 이하인 단어만 입력으로 주 www.acmicpc.net 문제 씬디는 애너그램(anagram) 프로그램을 만들어 줄 수 있는 남자를 좋아한다. 참고로 씬디는 매우 예쁘다. 애너그램 프로그램이란, 입력받은 영단어의 철자들로 만들 수 있는 모든 단어를 출력하는 것이다. 가령 "abc" 를 입력받았다면, "abc", "acb", "bac", "bca", "cab", "cba" 를 출력해야 한다. 입력받은 단어내에 몇몇 철자가 중복될 수 있다. 이 경우 ..
https://www.acmicpc.net/problem/20540 20540번: 연길이의 이상형 졸업을 앞둔 연길이는 크리스마스가 다가올수록 외로움을 느낀다. 그런 연길이를 위해 동우는 소개팅을 시켜주지는 않고 연길이의 이상향을 찾는 것을 도와주고자 한다. MBTI 신봉자인 연길이는 www.acmicpc.net 문제분석 입력은 MBTI가 문자열로 주어지고 4가지 지표가 모두 반대되는 MBTI를 출력해야한다. 문제풀이 지표 설명 외향(Extroversion) 내향(Introversion) 선호하는 세계:세상과 타인 / 내면 세계 감각(Sensation) 직관(iNtuition) 인식형태: 실제적인 인식/ 실제 너머로 인식 사고(Thinking) 감정(Feeling) 판단기준: 사실과 진실 위주 / 관계와..
문제풀이 각 테스트 케이스마다 필요한 부품들의 수를 입력받아 부품의 가격과 곱한 후 소수점 둘째자리까지만 출력(format 사용)하면 된다. 문제코드
https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net 문제 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 5^2과 1^2의 합이다; 또한 4^2 + 3^2 + 1^2으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내..
문제 15917번: 노솔브 방지문제야!! 어떤 수 a가 2의 거듭제곱꼴로 나타내어진다고 해 봅시다. 그렇다면, a = 2n (단 n ≥ 0인 정수) 를 만족할 겁니다. 보통, 각 비트별로 검사를 하면서, 켜져 있는 비트의 개수를 알아내는 것도 좋은 www.acmicpc.net 문제 해석 주어진 숫자를 2^n으로 딱 떨어지게 표현할 수 있으면 1, 아니면 0을 출력해야 하는 문제이다. 문제 풀이 숫자를 2의 거듭제곱인지 아닌지 판별하는 가장 쉬운 방법은, 십진수인 정수를 이진수로 변환하여 생각하는 것이다. 이진수로 변환했을 때, 전체 자리 중 1이 가장 첫 번째 자리에 한 번만 등장하는 경우에 2의 거듭제곱이라는 점을 이용하였다. 전체 코드 input = __import__('sys').stdin.read..
KauKoala
Koala