본문 바로가기

Algorithm705

[구현/수학] 백준 1402 아무래도이문제는A번난이도인것같다 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1402번: 아무래도이문제는A번난이도인것같다 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다. www.acmicpc.net 2. 문제 풀이 A = a1 * a2 ... * an B = a1 + a2 ... + an A가 B가 될 수 있는지 판별하는 문제입니다. 단순히 A를 소인수분해한 다음에, 조합해서 B가 되는지 찾아볼 수 있습니다. 하지만, a가 1 또는 -1이 아니라는 보장이 없습니다. 단순히 1과 -1의 조합으로 어떤 B라도 만들 수 있으며, 어떤 테스트케이스이든 yes가 됩니다. 3. 코드 import sys input = sys.stdin.. 2022. 4. 23.
[구현/수학] 백준 11816 8진수, 10진수, 16진수 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 11816번: 8진수, 10진수, 16진수 첫째 줄에 X가 주어진다. X는 10진수로 바꿨을 때, 1,000,000보다 작거나 같은 자연수이다. 16진수인 경우 알파벳은 소문자로만 이루어져 있다. www.acmicpc.net 2. 문제 풀이 주어진 8진수, 10진수, 16진수를 10진수로 변환하는 문제입니다. int(n, base=m): m진수인 n을 10진수로 변환 int() 함수를 이용하면 쉽게 해결할 수 있습니다. 3. 코드 x = input() # 10진수 1의 자리 if len(x) == 1: print(x) # 16진수 elif x[0:2] == '0x': print(int(x[2:], 16)) # 8진수 elif x[0] == '0': prin.. 2022. 4. 22.
[구현/수학] 백준 1252 이진수 덧셈 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1252번: 이진수 덧셈 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. www.acmicpc.net 2. 문제 풀이 두 이진수를 입력받아 덧셈한 결과를 출력하는 문제입니다. num = 0 digit = 0 # 이진수 => 십진수 변환 for i in N[::-1]: num += int(i)*(2**digit) digit += 1 res = '' # 십진수 => 이진수 변환 while num != 0: res = str(num%2) + res num //= 2 print(res) 십진수 2진수 변환 규칙대로 코드를 구현하면 .. 2022. 4. 21.
[구현/수학] 백준 10829 이진수 변환 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10829번: 이진수 변환 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000,000,000,000) www.acmicpc.net 2. 문제 풀이 10진수를 2진수로 변환하는 문제입니다. res = '' # 십진수 => 이진수 변환 while num != 0: res = str(num%2) + res num //= 2 print(res) 원리원칙대로 10진수를 2진수를 변환하는 코드는 위와 같습니다. 2로 나눈 나머지를 거꾸로 세어주면 2진수가 되죠. bin(n): 10진수 n을 2진수로 변환 하지만, 파이썬에는 이진수로 변환해주는 bin() 함수가 있습니다. bin() 함수로 한 줄로 풀이할 수도 있습니다. 3. 코드 print(bin(int.. 2022. 4. 20.
[동적계획법/DP] 백준 1699 제곱수의 합 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 2. 문제 풀이 가장 적은 제곱수의 합으로 N을 구하는 문제입니다. 2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [ Contents ] 1. 동적 프로그래밍(Dynamic Programming, 동적계획법) 동적계획법(Dynam.. 2022. 4. 19.
[정렬/탐색] 백준 3273 두 수의 합 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 2. 문제 풀이 서로 다른 양수로 이루어진 수열에서 두 수를 뽑아 X가 되는 경우를 찾는 문제입니다. 1 2 4 6 7 8 10 s e 오름차순으로 정렬하고, 양 끝을 가리키는 포인터를 이용해서 X를 탐색합니다. start 포인터는 0번부터 시작해서 +1씩 증가하고, end 포인터는 n-1번부터 시작해서 -1씩 감소합니다. list[start] + list[e.. 2022. 4. 18.
[정렬/탐색] 프로그래머스 K번째 수 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 2. 문제 풀이 주어진 배열의 일정 범위 내 K번째 수를 구하는 문제입니다. sorted(lst): lst 내 원소를 오름차순으로 정렬 파이썬의 sorted() 함수를 이용하면 쉽게 구할 수 있습니다. 3. 코드 def solution(array, commands): answer = [] for i, j, k in commands: answer.append(sorted(array[i-1:j])[k-1]) return answer sorted() 함수를 사용해서 해당 범위의 배열을 .. 2022. 4. 17.
[DP/동적계획법] 백준 11054 가장 긴 바이토닉 부분 수열 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 2. 문제 풀이 가장 긴 바이토닉 부분 수열을 구하는 문제입니다. [ 1 3 2 1 4 2 2 1 ] => [ 1 2 4 2 1 ] 바이토닉 부분 수열은 '증가수열 + 감소수열'의 형태로, 증가하다가 감소하는 수열입니다. 유의할 점은 증가 수열 또는 감소 수열만 있어도 바이토닉 부분 수열입니다. 굳이 꼭 증가하다 감소하진 않아도 됩니다. 2022.04.12 - [Algorithm] - [DP/동적계획법] 백준 11053 가장 긴 증가하.. 2022. 4. 16.
[DP/동적계획법] 백준 14002 가장 긴 증가하는 부분 수열 4 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 2. 문제 풀이 가장 긴 증가 수열을 찾는 문제입니다. 중간에 작은 숫자가 끼어 있어도 무시할 수 있습니다. 2022.04.12 - [Algorithm] - [DP/동적계획법] 백준 11053 가장 긴 증가하는 부분 수열 - 파이썬(Python) 가장 긴 증가 부분 수열을 찾는 방법은 위 문제에서 찾았습니다. 해당 부분은 위 링크를 참.. 2022. 4. 15.