목록Development/Algorithm & Coding Test (189)
컴공생의 다이어리
질문 동네 편의점의 주인인 동빈이는 N개의 동전을 가지고 있습니다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 구현한 코드 아래는 파이썬으로 구현한 코드이다. N=int(input()) coin=list(map(int,input().split())) coin.sort() target=1 for x in coin: if target>=x: target+=x else: break print(target) 아래는 c/c++으로 구현한 코드이다. #include #include int main() { int N; int target = 1; std::cin >> N; int* coin = new int[N]; for (int i = 0; i < N; i..
다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 질문 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 코드로 구현 아래는 파이..
질문 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '*' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 단, +보다 *를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다. 구현한 코드 아래는 파이썬으로 구현한 코드이다. data=input() result=int(data[0]) for i in range(1,len(data)): if int(data[i]) data; result = data[0] - '0'; for (int i = 1; i < data.length(); i++) { if ((data[i]-'0')
한 마을에 모험가가 N명이 있고 모험가를 대상으로 공포도를 측정했다. 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있다는 규정이 있다. 길드장은 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금해한다. 질문 길드장을 위해 N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최대값을 구하는 프로그램을 작성하시오. 단, 몇 명의 모험가는 마을에 그대로 남아 있어도 되기 때문에, 모든 모험가를 특정한 그룹에 넣을 필요는 없다. 구현한 코드 아래는 파이썬으로 구현한 코드이다. n = int(input()) data = list(map(int, input().split())) data.sort() result = 0 # 총 그룹의 수 count..
어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. N에서 1을 뺀다. N을 K로 나눈다. 질문 N과 K가 주어질 때, N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 코드로 구현 아래는 파이썬으로 구현한 코드이다. N,K=map(int,input().split()) result=0 while True: if N%K==0: N/=K else: N-=1 result+=1 if N==1: break print(result) 아래는 C/C++으로 구현한 코드이다. #include int main() { int N, K; int result = ..
숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그 다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려햐여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 질문 카드들이 N X M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그램을 만드시오. 코드로 구현 아..
큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하야 가장 큰 수를 만드는 법치이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특정이다. 질문 배열의 크기 N, 숫자가 더해지는 횟수 M, 그리고 K가 주어질 때 큰 수의 법칙에 따른 결과를 출력하시오. 코드로 구현 아래는 파이썬으로 구현한 코드이다. N,M,K=map(int,input().split()) data=list(map(int,input().split())) data.sort() first=data[N-1] second=data[N-2] result=0 count1=(M//(K+1))*K+M%(K+1) count2=M-count1 result=count1..
질문 카운터에서 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정할 때, 손님에게 거슬러줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 코드로 구현 아래는 파이썬으로 구현한 코드이다. N=int(input()) count=0 coin_type=[500,100,50,10] for coin in coin_types: count+=N//coin#화폐로 거슬러 줄 수 있는 동전의 개수 세기 N%=coin print(count) 아래는 c/c++으로 구현한 코드이다. #include int main(){ int N; int count=0; std::cin>>N; int coin[4]={500,100,50,10}; for(int i=0;i