Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 우울증
- 대학원
- 석사
- CUDA
- pytorch
- word embedding
- 품사태깅
- 전처리
- 인공지능
- sentiment analysis
- 수기
- 자연어처리
- naver movie review
- Word2Vec
- NLP
- Classification Task
Archives
- Today
- Total
슬기로운 연구생활
[프로그래머스] 최대공약수와 최소공배수 본문
* 문제
programmers.co.kr/learn/courses/30/lessons/12940
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
* 문제 풀이
- 첫째, n과 m중 가장 작은 수를 찾는다.
- 둘째, 가장 작은 수부터 반복문을 사용해 -1씩해 n과 m을 나머지가 동시에 0이 되는 값이 최대 공약수이다.
- 셋째, n과 m을 곱해 시작 수를 설정한다.
- 마지막, n과 m으로 나눈 나머지가 동시에 0이 되는 값이 최소 공배수이다.
* 생각
- 최대공약수와 최소 공배수를 구하는 규칙을 찾는게 약간 어려웠다.
유클리드 호제법을 이용하면 최적화되게 구할 수 있는 것 같다.
이러한 문제 풀이능력이 쌓여서 고급 문제도 풀 수 있는 것 같다.
* 코드
def solution(n, m):
answer = []
min_val = min(n, m)
for i in range(min_val, 0, -1):
if (n%i == 0) and (m%i == 0):
answer.append(i)
break
max_val = n * m
for i in range(min_val, max_val+1):
if (i%n == 0) and (i%m == 0):
answer.append(i)
break
return answer
'슬기로운 코테 생활' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2020.12.21 |
---|---|
[프로그래머스] 하샤드 수 (0) | 2020.12.20 |
[프로그래머스] 키패드 누르기 (0) | 2020.12.16 |
[프로그래머스] 정수 제곱근 판별 (0) | 2020.12.15 |
[프로그래머스] 이상한 문자 만들기 (0) | 2020.12.11 |
Comments