분류 전체보기

https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 문제 해석 처음에는 순열을 이용하여 해결하면 된다 생각했지만 자기 자신과 같은 조합을 허용하여 나타내야 하기 때문에 백트래킹을 사용하여 해결해야한다. 코드 def go(start): if len(tmp) == m: print(*tmp) return for i in range(start, n): tmp.append(Str[i]) go(i) tmp.pop() n, m = map(int,..
https://www.acmicpc.net/problem/11022 11022번: A+B - 8 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. www.acmicpc.net 소스코드 풀이 1. 테스트 케이스의 개수 t를 입력받는다. 2. for 반복문을 사용하여 t번 동안 a와 b를 입력받는다. 3. %d(문자열 포맷 코드)를 사용하여 출력한다.
문제 https://www.acmicpc.net/problem/15726 15726번: 이칙연산 첫째 줄에 세 개 정수 A, B, C(1 ≤ A, B, C ≤ 1,000,000)가 주어진다. 답은 int범위를 벗어나지 않는다. www.acmicpc.net 소스코드 a, b, c = map(int, input().split()) md = int(a*b/c) dm = int(a/b*c) print(max(md, dm)) 문제풀이 1. 세 개 정수 a, b, c 를 입력받는다. 2. 곱셈을 먼저하고 나눗셈을 나중에 하여 나온 값을 변수1(md)에 저장한다. 3. 나눗셈을 먼저하고 곱셈을 나중에 하여 나온 값을 변수2(dm)에 저장한다. 4. max명령어를 이용하여 더 큰 값을 출력한다.
문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 입력받은 도시의 정보에서 치킨집과 집의 위치를 찾아 리스트에 저장한다. itertools의 combinations함수를 이용하여 전체 치킨집 중 m개의 치킨집을 선택한 조합을 comb에 저장한다. 각 집마다 m개의 치킨집 중 치킨 거리가 가장 작은 값을 dist에 더해준다. 모든 집을 확인한 후 새로운 리스트에 dist를 넣어준다. (dist = 도시의 치킨 거리)..
풀이 해당 문제의 입출력이 매우 작아 (numbers는 길이 1 이상 7 이하인 문자열) 브루트포스로 풀 수 있다! permutations와 파이썬 join함수를 이용하여 가능한 모든 숫자 배열을 만들어낼 수 있었다. permutation은 1,2,3이 있다면 12, 21 이렇게 순서가 바뀐 경우도 모두 가져올 수 있다. 코드 from itertools import permutations as pm N=10000000 primes=[True for _ in range(N)] primes[0]=False primes[1]=False for i in range(2,N): if primes[i]: #2같은 소수를 만나면 for j in range(i+i,N,i): primes[j]=False # def sol..
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS문제입니다. 그냥 스택을 이용하여 푸는 방법과, 클래스를 만들어 푸는 방법 2가지로 나누어 진행하였습니다. 먼저 스택을 이용한 방법입니다. class Solution { static Stack stack1= new Stack(); static Stack stack2= new Stack(); static int[] num; static int g; static int cnt=0; public ..
문제 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 문제풀이 1. 무한루프로 666부터 차례대로 ans를 1씩 늘린다. 2. for 문으로 통해 6이 연속으로 세번 들어가는 수인지 탐색한다. 3. 들어간다면 sum을 1씩 늘린다. 3. sum이 N과 같아지면 N번째 종말의 수가 있는 수를 찾게되므로 ans를 출력한다. 코드
문제 설명 블럭을 쌓거나 제거해서 평평한 바닥을 만들면 되는 문제이다. 입력되는 땅의 높이가 0~256 사이라서 0과 256 사이의 높이를 모두 체크해도 되지만, 입력된 높이의 최소~최대 사이만 체크해도 가능하다. 답이 여러개라면 가장 땅의 높이가 높은 것을 출력해야 하기에 낮은 높이부터 체크하였다. 각 높이를 돌면서, 평평하게 만드는데 드는 시간과 블럭을 체크하였고, 블럭이 부족하다면 답으로 기록하지 않았다. 코드 #include #include #include #include #include using namespace std; int N, M, B; int arr[500][500]; int answer_time = INT_MAX; int answer_height; int main() { cin >>..
6603번: 로또 (acmicpc.net) 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 단순히 입력받은 집합 중에서 6개만 조합하여 출력하면 되는 문제. import sys input = sys.stdin.readline from itertools import combinations while True: srr=list(map(int,input().split())) k=srr[0] if k==0: break ans=list(combinations(srr[1:],6)) for i in range(..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 알고리즘 분류 브루트포스 알고리즘 백트래킹 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다..
문제 https://www.acmicpc.net/problem/15917 15917번: 노솔브 방지문제야!! 어떤 수 a가 2의 거듭제곱꼴로 나타내어진다고 해 봅시다. 그렇다면, a = 2n (단 n ≥ 0인 정수) 를 만족할 겁니다. 보통, 각 비트별로 검사를 하면서, 켜져 있는 비트의 개수를 알아내는 것도 좋은 www.acmicpc.net 문제풀이 1. 시간 초과 방지를 위해 sys 라이브러리의 readline() 함수를 이용한다. 2. 문제 조건에서 a는 1이상 2**31-1 이하 자연수이므로 리스트에 2**0 ~ 2**30까지 추가해둔 후, a값을 입력받아 비교한다. Code import sys input = sys.stdin.readline Q = int(input()) list = [] for..
문제 https://www.acmicpc.net/problem/20540 문제풀이 1. MBTI 네자리를 list에 입력받는다. 2. 네자리 모두 반대로 출력하기 위해 앞자리부터 하나씩 반대인 MBTI로 바꾸어 출력한다. 3. end 옵션을 사용하여 띄어쓰기나 줄바꿈 없이 출력한다. Code mbti = list(input()) if mbti[0] == 'E': print("I", end = '') elif mbti[0] == 'I': print("E", end = '') if mbti[1] == 'S': print("N", end = '') elif mbti[1] == 'N': print("S", end = '') if mbti[2] == 'T': print("F", end = '') elif mbti..
KauKoala
'분류 전체보기' 카테고리의 글 목록 (49 Page)