[백준_python] 최소공배수 || 1934 (유클리드 호제법)
·
🎯PS
www.acmicpc.net/problem/1934 1934번: 최소공배수두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있www.acmicpc.net유클리드 호제법,,,기억이 안났다. ㅋㅋㅋㅋㅋㅋ 그래서 이전에 풀었던 2609문제를 다시 보며 적용해주었다..!#최소공배수 t = int(input()) for _ in range(t): x, y = map(int, input().split(' ')) a, b = x, y while b!=0: r = a % b a, b = b, r #유클리드 호제법 print(int(x * y / a))dmaol..
[백준_python] 파도반 수열 || 9461
·
🎯PS
www.acmicpc.net/problem/9461 9461번: 파도반 수열오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net1, 1, 1, 2, 2가 되기까지 규칙을 모르겠다가 그 후로부터 첫 요소와 끝 요소가 합해져서 3, 두 번째 요소와 끝 요소가 합해져서 4 ... 등등으로 쭉 늘어나는 규칙을 확인했다. dp[n] = dp[n-1] + dp[n-5] (점화식) t = int(input()) for _ in range(t): num = int(input()) arr = [1, 1, 1, 2, 2] if num > 4: for i in r..
[백준_python] 소수 구하기 || 1929
·
🎯PS
www.acmicpc.net/problem/1929 1929번: 소수 구하기첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.www.acmicpc.net2부터 쭉 나눠보기# 소수 구하기 # ? 시간 초과 m, n = map(int, input().split(' ')) arr = [i for i in range(m, n+1)] for i in arr: if i == 1: continue if i == 2: print(i) continue cnt = 0 for j in range(2, i): if i % j == 0: cnt += 1 if cnt == 0: print(i)시간 초과 발생!!에라토스테네..
[백준_python] 1, 2, 3 더하기 || 9095
·
🎯PS
www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.www.acmicpc.net이 문제 또한, 다이나믹 프로그래밍 문제이다. 1 : (1) 2 : (1, 1) (2) 3 : (1, 1, 1) (1, 2) (2, 1) (3) 4 : (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (2, 1, 1) (1, 3) (3, 1) (2, 2) → 7개 5 : (1, 1, 1, 1, 1) (1, 1, 1, 2) x 4 (1, 1, 3) x 3 (2, 3) x 2 (1, 2, 2) x 3 → 13개 = 7 + 4 + 2 6 : (1, 1, 1, 1, 1, 1) (1, 1, 1, 1, 2) x 5..
[백준_python] 1로 만들기 || 1463
·
🎯PS
www.acmicpc.net/problem/1463 1463번: 1로 만들기첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.www.acmicpc.net이 문제는 다이나믹 프로그래밍과 관련된 문제이다. 다이나믹 프로그래밍이란? 큰 문제를 작은 문제로 나누어서 푸는 기법, 작은 부분 문제들이 반복되는 경우를 매번 재계산하지 않고 재사용을 하는 기법이라고 한다. 구현 방식으로는 bottom-up과 top-down이 있다. bottom-up은 작은 문제부터 차근차근 푸는 것이고 top-down은 보통 우리가 아는 재귀 함수로, 큰 문제를 풀려하고 작은 문제가 풀리지 않았다면, 작은 문제를 푸는 방식이다.2 → 1 3번째 연산을 1회 해준다. 10 → 5 →4 →2→1이라는 방식도있지만..
[백준_python] 회전하는 큐 || 1021(global, deque.rotate())
·
🎯PS
www.acmicpc.net/problem/1021 1021번: 회전하는 큐첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net2번 연산은 1 2 3 -> 2 3 1 3번 연산은 1 2 3 -> 3 1 2 뽑으려는 값이 큐의 첫 번째 요소가 될 때까지 둘 연산을 각각 반복하고 그 중에 최소값을 선택하여 합하면서 총 연산의 최소 횟수를 구해준다.# 회전하는 큐 n, m = map(int, input().split(' ')) # n : 큐의 크기, m : 몇 번 뽑아낼 건지 arr = list(map(int, input().split(' ..
[백준_python] 패션왕 신해빈 || 9375
·
🎯PS
www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.www.acmicpc.net# 패션왕 신해빈 from collections import Counter t = int(input()) for _ in range(t): n = int(input()) arr = [] for i in range(n): clothes, kind = input().split(' ') arr.append(kind) wear = ..
[백준_python] 프린터 큐 || 1966
·
🎯PS
www.acmicpc.net/problem/1966 1966번: 프린터 큐여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에www.acmicpc.net큐는 선입선출의 형태, 각 문서들마다 중요도가 주어지는데, 중요도대로 출력할 수 있도록 하여야 한다. 따라서, 가장 맨 앞에 위치한 문서의 중요도를 확인하고, 나머지 문서에 중요도가 더 높은 것이 있다면, 빼고 다시 넣어주며 이를 반복하며 중요도 대로 출력되도록 해준다.import sys n, m = map(int, sys.stdin.readline().strip().split(' '))라고 해주어야하는데 int(inp..
[프로그래머스_python] 위장 || 42578
·
🎯PS
programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장programmers.co.kr하 이 문제는 조합으로 푸는 문제라고 생각해서 해시까지는 구현해주었는데,,, 경우의 수를 이제 어떻게 구해주지?에서 막혔었다.....ㅠㅜ 옷의 종류가 a와 b가 있고 각각 2벌씩 있다면, 스파이가 입을 수 있는 옷의 경우의 수는 2 x 2 = 4가지 그러나, 스파이는 1개의 옷만 입는 경우가 있으므로, +1을 해주어 3x3 = 9가지 이 경우에는 아무것도 걸치지 않는 경우가 포함되어있으므로 -1을 해준다. def solution(clothes): a = {} for i in range(len(clothes)): if clothes[i][1] in a: a[cloth..
[프로그래머스_python] 전화번호 목록 || 42577
·
🎯PS
programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조programmers.co.kr진짜로............해시를 어떻게 이용해주어야 하는 건지,,,,,, 접두사만 어떻게 비교해주어야 하는건지......... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ여러번 시도를 해주었었다. 결국에는 해시를 이용해주지 않고 문제를 풀어주었었는데, 접두사만 비교할 수 있는 함수가 따로 있었던 게 기억이 났다.. 시도를 안해주었었지만,, 오늘 해주었다! def solution(pb): #?실패한..