알고리즘 34

파이썬(python) 2609번 최대공약수와 최소공배수

문제링크https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.www.acmicpc.net24, 18의 최대공약수는 6, 최소공배수는 72이다.최대공약수를 구하는 공식은 24와 18의 약수 중 공약수 값 중 가장 큰 값이다.최소공배수는 최대공약수를 구한 후, 24와 18를 최대공약수(6)으로 나눈 후 나온 몫 값 2개를 곱하면 6X4X3=72이다.import sysn1, n2 = map(int, sys.stdin.readline().split())n_min = min(n1, n2)n_list = []for i in range(1, n_min+1): ..

알고리즘 2022.01.25

1이 될 때까지

주어진 n, k수에서1. n에서 1을 뺀다.2. n을 k로 나눈다.두 과정 중 하나를 반복적으로 수행하려 한다. 2번째 과정은 n이 k로 나누어 떨어질 경우에만 가능하다.최소 횟수값을 출력하기 위해서는 2번, 나눗셈을 많이 사용해야 한다. 책에 나와있는 코드 대신, 스스로 코드를 짜본 결과 import sysn,k = map(int, sys.stdin.readline().split())# 시행 횟수cnt = 0 while n != 1: if n%k == 0: n = n//k else: n = n-1 cnt += 1print(cnt)n이 1이 아닐동안 반복문을 작성하였고, cnt = 0으로 두어 한 번 실행할 때마다 1씩 증가

알고리즘 2022.01.24

숫자 카드 게임

1. 숫자가 쓰인 카드 N*M 형태로 놓는다. 행*열2. 행 선택, 그 카드들 중 가장 숫자가 낮은 카드를 뽑는다.3. 뽑은 카드 중 가장 높은 숫자를 뽑는다. (예시)7 4 3 63 2 4 6첫 행은 3, 두번째 행은 2, 3과 2중 큰 값은 3으로 정답은 3이다. import sysn, m = map(int, sys.stdin.readline().split())result = 0for i in range(n): # 행의 카드 값 data = list(map(int, sys.stdin.readline().split())) # 최소값 min_ = min(data) # 뽑은 카드 값중 큰 값 추출 result = max(result, min_)print(result)

알고리즘 2022.01.24

파이썬(python) 10039번 평균 점수

문제링크https://www.acmicpc.net/problem/10039 10039번: 평균 점수입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다. 점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점www.acmicpc.net 점수를 리스트로 만들고 점수 합계를 누적하면서 문제를 풀었다. import sysa = int(sys.stdin.readline())b = int(sys.stdin.readline())c = int(sys.stdin.readline())d = int(sys.stdin.readline())e = int(sys.stdin.readline())score_list = [a,b,c,d,e]..

알고리즘 2021.12.24

파이썬(python) 2935번 소음

문제링크https://www.acmicpc.net/problem/2935 2935번: 소음수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게www.acmicpc.net import sysa = int(sys.stdin.readline())op = input()b = int(sys.stdin.readline())if op == '*': print(a*b)elif op == '+': print(a+b)

알고리즘 2021.12.24

파이썬(python) 5355번 화성 수학

문제 링크https://www.acmicpc.net/problem/5355 5355번: 화성 수학겨울 방학에 달에 다녀온 상근이는 여름 방학 때는 화성에 갔다 올 예정이다. (3996번) 화성에서는 지구와는 조금 다른 연산자 @, %, #을 사용한다. @는 3을 곱하고, %는 5를 더하며, #는 7을 빼는 연산www.acmicpc.net적절한 for문을 사용하면서 문제를 풀었습니다.import syst = int(sys.stdin.readline())for _ in range(t): m = sys.stdin.readline().split() n = float(m[0]) # 맨앞자리는 숫자, 따로 추출 operator = m[1:] # 맨앞자리 제외하고 나머진 연산자 for i..

알고리즘 2021.12.24

그리디 알고리즘 Greedy

오늘은 그리디 알고리즘에 대하여 공부하였습니다.백준 알고리즘에서 그리디 알고리즘 문제를 풀어본적 있지만, 이론부터 알아가면 더욱 좋을 것 같네요.!그리디(Greedy)가 사전정의에 따르면, '탐욕스러운' 또는 '욕심 많은' 뜻이네요.알고리즘에서는 지금 당장 좋은 것만 고르는 방법으로 지칭하곤 하더라고요. 그리디 알고리즘에서 대표 문제로 '거스름돈' 문제를 풀어보겠습니다..! 거스름돈으로 사용할 500원, 100원, 50원, 10원 동전이 무한히 존재.손님에게 거슬러줘야 할 돈이 A원 일 때, 최소 동전 개수는? (A는 10의 배수) import sys# 입력값A = int(sys.stdin.readline())# 동전 종류 500 100 50 10coin = [500, 100, 50, 10]# 동전 개..

알고리즘 2021.12.22

collections (deque/Counter)

collections이라는 라이브러리에서는 deque와 Counter가 많이 쓰인다.dequedeque와 list의 차이점은 시간 복잡도이다.list의 경우는 앞쪽에 있는 값을 처리할 때 리스트 개수에 따라 시간이 많이 소요된다.앞쪽에 값을 추가/제거 할 경우 시간 복잡도는 O(N),뒤쪽에 값을 추가/제거 할 경우 시간 복잡도는 O(1)이 걸린다. deque는 슬라이싱, 인덱싱이 불가능하지만 데이터를 추가/삭제할 때는 매우 효과적이다.- popleft() : 리스트의 첫 번째 값을 제거- pop() : 리스트의 마지막 값을 제거- appendleft() : 리스트의 맨 앞에 값을 추가- append() : 리스트의 마지막에 값을 추가from collections import dequedata = dequ..

알고리즘 2021.12.21