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 | 29 | 30 | 31 |
Tags
- 정렬
- 개발자북클럽
- 타입스크립트
- 이것이코딩테스트다
- SQL
- BOJ
- 백준
- 코딩테스트
- 구현
- 코테
- 알고리즘
- 그리디
- 코딩일기
- DP
- ps
- 이코테
- 이진탐색
- 프로그래머스
- 노마드코더
- 백준온라인저지
- 앱개발
- 최단경로
- 빅데이터분석
- c++
- 다이나믹프로그래밍
- react-native
- Typescript
- dfs
- bfs
- TS
Archives
- Today
- Total
한량처럼 살고 싶다
[이것이 코딩테스트다]1이 될 때까지(C++) 본문
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=247882118
이것이 취업을 위한 코딩 테스트다 with 파이썬
IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제
www.aladin.co.kr
해당 도서의 그리디 알고리즘 - 실전문제4 1이 될 때까지를 풀이한다.
<문제 조건>
어떤 수 N을 입력 받은 뒤, 아래의 두 가지 연산 중 하나를 반복적으로 선택하여 1을 만드는 최소의 횟수를 구하라.
1) N에서 1을 뺀다
2) N을 K로 나눈다. (단, N은 K의 배수)
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
using namespace std;
int N, K;
int main() {
scanf("%d %d", &N, &K);
int answer = 0;
int tmp = N;
while (tmp != 1) {
if (tmp % K == 0) tmp /= K;
else tmp -= 1;
answer += 1;
}
printf("%d", answer);
}
<솔루션 도출>
1) 나누기는 빼기보다 N을 1에 더 빠르게 가깝게 해준다.
2) 따라서 N이 K로 나뉘어지면 무조건 K로 나누도록 하고, 그 이외의 경우에만 1을 빼도록 한다.
'PS > 이코테' 카테고리의 다른 글
[이것이 코딩테스트다]음료수 얼려 먹기(C++) (0) | 2023.02.02 |
---|---|
[이것이 코딩테스트다]게임 개발(C++) (2) | 2023.01.17 |
[이것이 코딩테스트다]왕실의 나이트(C++) (0) | 2023.01.05 |
[이것이 코딩테스트다]숫자 카드 게임(C++) (0) | 2023.01.05 |
[이것이 코딩테스트다]큰 수의 법칙(C++) (0) | 2023.01.02 |