본문 바로가기

Algorithm

(38)
Algorithm/Baekjoon Baekjoon - #2217 - 로프 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 2217번 로프 2. 입출력 예시 입력 예시 출력 예시 2 10 15 20 3. 문제 풀이 일단 이 문제는 여러 번 틀렸는데, 그 이유는 문제의 출제 의도를 잘못 파악했기 때문이었다. 처음에는 여러 개의 로프 중 하중이 가장 작은 로프에 로프의 수만큼 곱하면 되겠다라고 생각했다. 여러 번 제출을 시도하였으나, 전부 틀렸습니다 처리를 받고 문제를 차근차근 몇 번이고 다시 읽어보았다. 중량 w의 물체를 여러 다발의 로프에 걸었을 때 각각의 로프에 걸리는 중량은 w/로프의 수량 이다. 예를 들어서, 로프 3개의 하중이 각각[20, 50, 100]일 경우를 생각해보자. 먼저 하중이 20인 로프의 경우를 보면, 최대 20 × 3개 ..
Algorithm/Baekjoon Baekjoon #1541 - 잃어버린 괄호 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 1541번 잃어버린 괄호 2. 입출력 예시 입력 예시 출력 예시 "55-50+40" -35 3. 문제 풀이 이 문제 역시 간단히 해결할 수 있었다. 주어진 식의 합(total)을 0으로 초기화한다. 문자열로 구성된 식을 입력받으며, 이 때 +를 기준으로 나눈 후 이를 리스트(values)에 저장한다. 반복문을 통해 +를 기준으로 나눈 리스트의 요소를 다시 - 기준으로 나누어주며, 이때 나눈 요소들은 정수형(int)으로 변환 후 이들의 합을 리스트에 저장한다. 리스트의 길이만큼 역순으로 반복하며, 인덱스가 0일 경우 식의 합에 해당 해당 요소를 더하고, 그 외에는 식의 합에서 해당 요소만큼 빼준다. 인덱스가 0인 경우는 가장..
Algorithm/Baekjoon Baekjoon #5585 - 거스름돈 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 5585번 거스름돈 2. 입출력 예시 입력 예시 출력 예시 380 4 3. 문제 풀이 이 문제는 간단히 해결할 수 있었다. 문제를 해결하기 위한 과정은 아래와 같다. 타로가 지불해야할 금액을 입력받으며, 타로가 지불하고자 하는 1,000엔에서 타로가 지불해야 할 금액을 뺀 거스름돈을 변수 m에 저장한다. 각각의 동전의 종류(500, 100, 50, 10, 5, 1)를 리스트 변수(flags)에 저장한다. 동전 수량(cnt)은 0으로 초기화한다. 반복문을 통해 동전의 종류를 호출하고, 거스름돈에서 해당 동전을 나눈 몫을 동전 수량에 더한 후 거스름돈은 거스름돈에서 해당 동전을 나눈 나머지로 초기화한다. 모든 반복이 완료되면 ..
Algorithm/Baekjoon Baekjoon #1931 - 회의실 배정 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 1931번 회의실 배정 2. 입출력 예시 입력 예시 출력 예시 11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14 4 3. 문제 풀이 이 문제는 생각보다 까다로운 문제였다. 가정사항을 세운 후 수 차례 가정사항을 수정 후 문제를 풀 수 있었다. 회의의 수량(N)을 입력 받는다. 회의의 수량 만큼을 반복하여 각각 시작 시간과 종료 시간을 튜플로 받아온 후 이를 모두 하나의 리스트에 저장한다. 회의 수량(cnt)과 종료 시간(end)을 0으로 초기화한다. 리스트 내 튜플의 종료 시간을 기준으로 정렬 후, 시작 시간을 기준으로 다시 정렬한다. 반복문을 통해 리스트 내 튜플의 요소를 호출..
Algorithm/Baekjoon Baekjoon #11047 - 동전 0 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 11047번 동전 0 2. 입출력 예시 입력 예시 출력 예시 10 4200 1 5 10 50 100 500 1000 5000 10000 50000 6 10 4790 1 5 10 50 100 500 1000 5000 10000 50000 12 3. 문제 풀이 이 문제 역시 굉장히 간단했다. 이를 해결하기 위한 순서는 다음과 같다. 동전 종류의 수량(N)과 가치의 합(K)를 입력받는다. 동전의 가치가 담긴 정보(A)를 입력받는다. 동전의 가치는 오름차순으로 주어지므로, 이를 내림차순으로 정렬한다. 반복문을 통해 동전의 가치가 담긴 리스트를 반복하며, 가치의 합에 동전 가치를 나눈 몫을 동전 수량에 더해준다. 그리고 가치의 합은..
Algorithm/Baekjoon Baekjoon #11399 - ATM 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 11399번 ATM 2. 입출력 예시 입력 예시 출력 예시 5 3 1 4 3 2 32 3. 문제 풀이 이 문제는 굉장히 간단했다. 이를 해결하기 위한 과정을 나열해보았다. 주어진 배열(P)을 오름차순으로 정렬한다. 새로운 배열에 주어진 사람의 수(N)만큼 반복하면서 배열의 순서 이전의 모든 값을 더한다. 새로운 배열 요소의 합을 출력한다. 이를 코드로 나타내면 아래와 같다. def solution(n, p): p.sort() t = [sum(p[:i+1]) for i in range(n)] print(sum(t)) N = int(input()) P = [int(x) for x in input().split(" ")] sol..
Algorithm/Baekjoon Baekjoon #2839 - 설탕 배달 목차 1. 문제 2. 입출력 예시 3. 문제 풀이 1. 문제 백준알고리즘 문제 - 2839번 설탕 배달 2. 입출력 예시 입력 예시 출력 예시 18 4 4 -1 6 2 9 3 11 3 3. 문제 풀이 알고리즘을 푸는 데에 있어서 몇 가지 가정사항을 적용하였다. 입력 값(N)이 5로 나누어 떨어질 경우는 5로 나눈 몫을 더한 후 모든 봉지 수량의 합을 출력 그 외에는 입력 값(N)에 3을 빼고, 봉지 수는 1 증가시켜줄 것 만약, 2번 과정에서 입력 값(N)이 0보다 작을 경우 -1을 출력할 것 위의 가정사항을 코드로 나타내면 다음과 같다. def solution(n): kg5 = 0 kg3 = 0 while True: if not n % 5: kg5 += n // 5 print(kg5 + kg3) bre..
Algorithm [Python] Kakao, 2021 카카오 블라인드 코딩 테스트, 신규 아이디 추천 1. 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어 카캉오 서비스에 가입하는 유저들의 아이디를 생산하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 카카오 아이디의 규칙은 아래와 같습니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입..