https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 2 예제 출력 1 1 예제 입력 2 10 예제 출력 2 3 힌..
분류 전체보기
https://www.acmicpc.net/problem/11365 11365번: !밀비 급일 당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면 해독된다는 것을 발견했다. 이 암호를 해독하는 프로그램을 작성하시오. www.acmicpc.net while True : password = input() if password == "END" : break else : password = password[::-1] print(password) 1. password에 end를 받으면 종료를 하는 while문을 작성한다. 2. password를 뒤부터 읽어내기를 하여 다시 저장을 한다. 3. print를 이용하여 해독된 password를 출력한다.
문제 https://www.acmicpc.net/problem/1350 1350번: 진짜 공간 첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 www.acmicpc.net 문제 풀이 1. 파일의 갯수 N과 파일의 크기, 클러스터의 크기를 입력받는다. 2. 파일의 크기를 클러스터의 크기로 나눌 때, 0으로 나누어 떨어지는지를 기준으로 구분. 0으로 나누어 떨어지지 않을 때는 1을 더해준다. 3. 파일의 크기가 클러스터의 크기보다 크지 않을때는 +1을 더해준다. Code N = int(input()) file = list(map(int, input(..

문제 풀이 두 수열의 부분 수열 중 가장 긴 공통 부분 수열을 찾는 문제이다. 2차원 배열의 행과 열을 각각의 수열로 생각하고 배열을 읽어 나간다. 문자열1[i]와 문자열2[j]가 같다면 i와 j 모두 증가시키고, LCS의 길이를 1 증가 시킨다. 다르다면 지금까지 가장 큰 LCS의 길이를 가져온다. 배열의 인덱스를 벗어나는걸 방지하려고 i와 j를 1부터 시작했고, 그래서 A[i] == B[j]가 아닌 A[i - 1] == B[j -1]이라고 작성하였다. 코드 #include #include #include #include #include using namespace std; string A, B; int arr[1001][1001]; int main() { cin >> A >> B; for (int i..
https://www.acmicpc.net/problem/17094 문제 2와 e는 발음이 비슷해, 둘을 섞어서 말하면 듣는 사람을 짜증나게 만들 수 있다. 지민이는 이 점을 이용해 은수를 미치게 하고 있다. 은수를 위해 지민이가 말한 문자열 s가 주어질때, 2의 등장 횟수가 더 많은지, e의 등장 횟수가 더 많은지 도와주자. 입력 첫 줄에 문자열 s의 길이가 주어진다. 둘째 줄에 문자열 s가 주어진다. s의 길이는 1 이상 105 이하이며, s는 2와 e로만 이루어져 있다. 출력 2의 등장횟수가 더 많다면 2를 출력하고, e의 등장횟수가 더 많다면 e를 출력한다. 등장횟수가 같다면 "yee"를 출력한다. (큰 따옴표 제외) 소스코드 str_len = int(input()) s = input() cnt_..
문제 https://www.acmicpc.net/problem/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net 소스코드 vowel=['a','e','i','o','u'] while True: sen=input() if sen == '#': break vowel_count=0 sen=sen.lower() for char in sen: if char in vowel: vowel_count += 1 print(vowel_count) 문제풀이 1. 모음을 리스트로 정의한다. 2. 무한 ..
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 ..