본문 바로가기

반응형

Implementation

(10)
[백준] 3의 배수(python) 1769번: 3의 배수 문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를 www.acmicpc.net TL;DR 구현(Implementation) 문자열(String) 문제 요약 1. 주어진 자연수 X가 3의 배수인지 판정하기 위해서 제안된 "다른 문제로 바꾸어 풀기" 방법을 사용하려고 한다. 2. 다른 문제로 바꾸어 풀기는 다음과 같다. 1. X의 각 자릿수를 더한 수 Y를 만든다. 2. Y가 3의 배수인지 판별한다. 3. 알고 있는 3의 배수가 한 자리 수밖에 없다고 가정하면 Y가 한 자리 수가 나올 때 까지 다른 문제로 바꾸어 풀기를 진행해야 한다. 그 때의 문..
[백준] 방 번호(python) 백준, 방 번호 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net TL;DR 구현(Implementation) 문자열(string) 문제 요약 1. 다솜이의 방 번호를 만들기 위해 필요한 카드 세트의 수를 출력하는 프로그램을 작성해야 한다. 2. 6과 9는 뒤집어서 각각을 사용할 수 있다. - 0 ~ 9까지 있는 카드 세트를 활용하여 다솜이의 방 번호를 만들 때, 필요한 카드 세트의 수를 출력하는 프로그램을 작성하는 문제이다. - 6과 9를 동일하게 취급할 수 있다는 점을 문제 풀이에 활용해야 한다. 입출력 형태 예시 1 :: 9999가 주어졌다. 문제에서 6과 9를 뒤집어서 동일하게 사용할 수 있다고 하였으..
[프로그래머스] 최솟값 만들기(python) 프로그래머스, 최솟값 만들기 TL;DR 주어진 문제 조건을 구현(implementation)할 수 있는지 문제 분석 1. 길이가 같은 자연수로 이루어진 배열 A,B에서 두 수를 뽑아 곱해서 누적하여 더한다. 2. 이 때, 더한 결과가 최소가 되는 값을 반환한다. - 1 ~ 2 : 해결해야 하는 문제 조건에 대해서 설명하고 있다. 입출력 형태 - 입출력 예시를 확인해보면 문제 해결을 위한 접근방법이 떠오른다. - 예시 1번은 1 * 5, 2 * 4, 4 * 4를 해서 더한 값이 최소가 된다. - 예시 2번은 1 * 4, 2 * 3을 해서 더한 값이 최소가 된다. - 즉, A에서 작은 원소와 B에서 큰 원소 순서대로 곱해서 더한 값이 최소값이 되는 것이다. 풀이 def solution(A,B): A.sort..
[프로그래머스] N개의 최소공배수(python) 프로그래머스, N개의 최소공배수 TL;DR 주어진 문제 조건에 따라 구현(implementation)할 수 있는지 유클리드 호제법 문제 분석 1. n개의 숫자를 담은 배열 arr에 대해 이 수들의 최소 공배수를 반환하는 함수를 작성하라. - 해결해야 하는 문제 조건에 대해서 말하고 있다. - 최소공배수이기 때문에, 배열을 순회하며 최소공배수를 배열 내의 숫자 간의 최소공배수로 갱신하면 풀 수 있다. 입출력 형태 - 숫자들이 저장된 arr이 입력으로 주어진다. - 예시 1번을 확인해보면 - 2와 6의 최소공배수는 6이다. - 6과 8의 최소공배수는 24이다. - 24와 14의 최소공배수는 168이다. - 이와 같이 배열에서 두 수 간의 최소공배수를 구한 뒤 다음 원소들과 최소공배수로 갱신해나가면 문제를 해..
[리트코드] Happy Number(python) 리트코드, Happy Number_해피 넘버 TL;DR 구현(Implementation) 문제 분석 1. 주어진 숫자 n이 해피 넘버인지 아닌지 판별하는 알고리즘을 작성하라. 2. 해피 넘버는 아래와 같은 과정을 거쳐 얻게 된다. 2-1. 주어진 숫자의 각 자리수를 제곱하여 더한다. 2-2. 2-1 과정을 1이 될때까지 반복하거나, 1을 포함하고 있지 않는 주기로 반복된다. 3. 해피 넘버라면 True를, 아니라면 False를 반환한다. - 1, 3 : 해결해야 하는 문제에 대해서 말하고 있다. - 2 : 알고리즘 구현에 필요한 해피 넘버에 대해서 설명하고 있다. 입출력 형태 - 주어진 숫자 n에 대해서 각 자리수를 제곱하여 더한 숫자를 만든다. - 만들어진 숫자에 대해서 1이 나올 때까지 반복한다. 풀..
[리트코드] Plus One(python) 리트코드, Plus One_1 더하기 TL;DR 해결해야 하는 문제를 구현할 수 있는지 문제 분석 1. 비어 있지 않은 음수가 아닌 정수가 주어지는 10진수 숫자가 저장된 리스트로 구성된 수에 1을 더하라. 2. 가장 큰 자리수의 수가 가장 처음에 저장되고, 각 원소들은 단일 숫자를 포함하고 있다. 3. 0만 있는 경우를 제외하고는 가장 처음에 0이 오지 않는다고 가정한다. - 1 : 해결해야 하는 문제 조건에 대해 설명하고 있다. - 2 : 리스트의 가장 앞쪽부터 가장 큰 자릿수의 숫자를 나타낸다. 각 자릿수의 숫자는 10 미만의 정수이다. - 3 : 리스트이 [0]으로 주어지는 경우를 제외하고, 0이 리스트의 가장 앞, 즉 가장 큰 자릿수 위치에 오면 안된다. 입출력 형태 - digits : 10 미..
[프로그래머스] 로또의 최고 순위와 최저 순위(python) 2021년 5월 27일 Algorithm, 프로그래머스, 로또의 최고 순위와 최저 순위 2021년 Dev-Matching: 웹 백엔드 개발자(상반기) TL;DR 주어진 문제의 조건을 구현할 수 있는지 문제 분석 1. 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다. 2. 알아볼 수 없는 번호가 당첨 번호라면, 해당 맞춘 개수의 순위에 당첨됩니다. 3. 알아볼 수 없는 번호가 당첨 번호가 아니라면, 해당 맞춘 개수의 순위에 당첨됩니다. - 2 ~ 3 : 알아볼 수 없는 번호인 0을 당첨번호라고 생각했을 때가 당첨 가능한 최고 순위, 그렇지 않을 경우가 당첨 가능한 최저 순위이다. - 즉, 당첨 가능한 최고 순위는 0이 아닌 숫자 중 당첨번호인 숫자의 개수 + 0의 ..
[프로그래머스] 신규 아이디 추천(python) 2021년 5월 26일 Algorithm, 프로그래머스, 신규 아이디 추천 2021년 카카오 블라인드 채용 TL;DR 주어진 문제의 조건을 구현할 수 있는지 정규 표현식(정규식)을 활용할 수 있는지 문제 분석 1. new_id의 모든 대문자를 대응되는 소문자로 치환한다. 2. new_id에서 알파벳 소문자, 숫자 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거한다. 3. new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환한다. 4. new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거한다. 5. new_id가 빈 문자열이라면, new_id에 "a"를 대입한다. 6. new_id의 길이가 16자 이상이라면, new_id의 첫 15개 문자를 제외한 나머지..