목록Coding Test (35)
mooni
Q. 문제카카오톡에서는 이모티콘을 무제한으로 사용할 수 있는 이모티콘 플러스 서비스 가입자 수를 늘리려고 합니다.이를 위해 카카오톡에서는 이모티콘 할인 행사를 하는데, 목표는 다음과 같습니다.이모티콘 플러스 서비스 가입자를 최대한 늘리는 것.이모티콘 판매액을 최대한 늘리는 것.1번 목표가 우선이며, 2번 목표가 그 다음입니다.이모티콘 할인 행사는 다음과 같은 방식으로 진행됩니다.n명의 카카오톡 사용자들에게 이모티콘 m개를 할인하여 판매합니다.이모티콘마다 할인율은 다를 수 있으며, 할인율은 10%, 20%, 30%, 40% 중 하나로 설정됩니다.카카오톡 사용자들은 다음과 같은 기준을 따라 이모티콘을 사거나, 이모티콘 플러스 서비스에 가입합니다.각 사용자들은 자신의 기준에 따라 일정 비율 이상 할인하는 이모..

Q. 문제 A 회사의 물류창고에는 알파벳 대문자로 종류를 구분하는 컨테이너가 세로로 n 줄, 가로로 m줄 총 n x m개 놓여 있습니다. 특정 종류 컨테이너의 출고 요청이 들어올 때마다 지게차로 창고에서 접근이 가능한 해당 종류의 컨테이너를 모두 꺼냅니다. 접근이 가능한 컨테이너란 4면 중 적어도 1면이 창고 외부와 연결된 컨테이너를 말합니다.최근 이 물류 창고에서 창고 외부와 연결되지 않은 컨테이너도 꺼낼 수 있도록 크레인을 도입했습니다. 크레인을 사용하면 요청된 종류의 모든 컨테이너를 꺼냅니다. 위 그림처럼 세로로 4줄, 가로로 5줄이 놓인 창고를 예로 들어보겠습니다. 이때 "A", "BB", "A" 순서대로 해당 종류의 컨테이너 출고 요청이 들어왔다고 가정하겠습니다. “A”처럼 알파벳 하나로만 출고..
Q. 문제당신은 비밀 조직의 보안 시스템을 뚫고 중요한 정보를 해독해야 합니다. 시스템은 1부터 n까지의 서로 다른 정수 5개가 오름차순으로 정렬된 비밀 코드를 가지고 있으며, 당신은 이 비밀 코드를 맞혀야 합니다.당신은 비밀 코드를 알아내기 위해 암호 분석 도구를 사용하며, m번의 시도를 할 수 있습니다. 각 시도마다 서로 다른 5개의 정수를 입력하면, 시스템은 그 중 몇 개가 비밀 코드에 포함되어 있는지 알려줍니다.만약 비밀 코드가 [3, 5, 7, 9, 10]이고, 입력한 정수가 [1, 2, 3, 4, 5]라면 비밀 코드에 포함된 정수는 3, 5 두 개이므로 시스템은 2를 응답합니다.당신은 m번의 시도 후, 비밀 코드로 가능한 정수 조합의 개수를 알고 싶습니다.비밀 코드에 사용된 정수의 범위가 1~..
Q. 문제프로그래머스 사이트를 운영하는 그렙에서는 재택근무와 함께 출근 희망 시각을 자유롭게 정하는 유연근무제를 시행하고 있습니다. 제도 정착을 위해 오늘부터 일주일 동안 각자 설정한 출근 희망 시각에 늦지 않고 출근한 직원들에게 상품을 주는 이벤트를 진행하려고 합니다.직원들은 일주일동안 자신이 설정한 출근 희망 시각 + 10분까지 어플로 출근해야 합니다. 예를 들어 출근 희망 시각이 9시 58분인 직원은 10시 8분까지 출근해야 합니다. 단, 토요일, 일요일의 출근 시각은 이벤트에 영향을 끼치지 않습니다. 직원들은 매일 한 번씩만 어플로 출근하고, 모든 시각은 시에 100을 곱하고 분을 더한 정수로 표현됩니다. 예를 들어 10시 13분은 1013이 되고 9시 58분은 958이 됩니다.당신은 직원들이 설..
Q9. Anagram(아나그램 : 구글 인터뷰 문제) : 주어진 두 문자열의 구성이 동일한지 확인하여 결과 출력입력 : 2개의 단어출력 : YES 또는 NO 여부 [내가 쓴 코드]a = list(input())b = list(input())dic = dict()for x in a : #첫번째 단어 if x in dic : #dic에 있는 글자면 value + 1 dic[x] += 1 else : #dic에 없는 글자면 추가 dic[x] = 1 for x in b : #두번째 단어 if x in dic : #dic에 있는 글자면 value - 1 dic[x] -= 1 else : #dic에 없는 글자면 조건에 맞지 않으므로 ..
Q7. 교육과정 설계(큐) : 제시된 필수과목의 수강 순서대로 수업계획이 되었는지 확인입력 : 필수과목N(1N개의 수업계획출력 : N개의 YES 또는 NO 여부 [내가 쓴 코드]from collections import dequerequired = list(input())n = int(input())course = list()for i in range(n) : plan = deque(list(input())) while plan : pivot = plan.popleft() for x in required : if pivot == x and pivot not in course : course.append(pivot)..
Q5. 공주 구하기(큐) : N명의 왕자 중에서 K번째 왕자를 반복 제거하고 최종적으로 남는 왕자를 출력입력 : N(5출력 : 왕자 번호 [내가 쓴 코드]n, k = map(int, input().split())a = deque(range(1, n + 1))while len(a) != 1 : a.rotate(-k+1) #음수로 회전 방향을 왼쪽으로 줌 a.popleft() print(*a) [풀이 코드]n, k = map(int, input().split())dq = deque(range(1, n + 1))#강의 앞부분 듣고 rotate 없이 작성해봄count = 1while len(dq) != 1 : b = dq.popleft() if count == k : c..
Q3. 후위표기식 만들기 : 입력된 중위표기식을 후위표기식으로 변환입력 : 중위표기식출력 : 후위표기식 [내가 쓴 코드]#어디에 내놓아도 부끄러운 내 코드,,,sample = {'(': 0, ')' : 0, '*' : 1, '/' : 1, '+' : 2, '-' : 2}a = list(input())result = list()operator = list()for x in a : if x == '*' or x == '/' or x == '+' or x == '-' : if len(operator) == 0 : operator.append(x) elif sample[operator[len(operator) - 1]] >= sample[x] : ..