Algorithm (6) 썸네일형 리스트형 [Algorithm] 신규 아이디 추천 문제 설명 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이.. [Algorithm] 가짜 영수증 찾기 가짜 영수증 찾기 누군가가 가짜 영수증을 제출하고 있습니다. 김토스는 재무팀을 돕기 위해 가짜 영수증을 찾아내는 시스템을 만들고 싶습니다. 가짜 영수증을 찾아내는 방법은 간단합니다. 가짜 영수증에는 금액이 옳지 않게 적혀있습니다. 옳은 금액은 다음의 조건을 모두 만족합니다. 옳은 금액은 0~9 사이의 숫자 또는 구분자(`,`)로만 구성되어야 한다. 예를 들면 `1만원`이나 `10,000원`, `+300`은 0~9 사이의 숫자 또는 구분자(`,`)가 아닌 문자가 포함되어 있으므로 옳지 않은 금액이다. 금액이 0원인 경우를 제외하고는 가장 왼쪽 숫자가 0일 수 없다. 예를 들면, 0은 옳은 금액이지만, 0100은 옳지 않다. 금액은 세자리 구분자(,)를 포함하고 있거나, 또는 전혀 포함하고 있지 않다. 예를.. [Algorithm] 과일 게임 과일 게임 무더운 여름 김토스는 친구들과 계곡으로 여행을 가게 되었습니다. 계곡을 눈앞에 두고 게임을 놓칠 수 없었던 김토스는 게임을 제안하게 됩니다. N개의 과일이 있을 때, 연속된 K개의 과일을 골라 K개 중 가장 무거운 과일의 무게를 점수로 해서 가장 높은 점수가 나온 사람이 계곡에 입수하는 게임입니다. 김토스는 게임을 하기 전 N개의 과일의 무게가 주어질 때, 나올 수 있는 모든 점수를 구하고 싶습니다. 입력 예시 `solution(fruitWeights, k)` 함수의 인자는 아래와 같이 전달됩니다. N개의 과일의 무게 `W[i]`를 담고 있는 배열 : `fruitWeights` (`1 [Algorithm] 계단을 오르는 방법 계단을 오르는 방법 김토스가 N개의 계단을 오르려고 합니다. 김토스는 한번에 1~3개의 계단을 이동할 수 있습니다. N개의 계단을 올라가는 방법이 총 몇 가지가 있는지 계산하는 함수를 구현해주세요. 입력 예시 solution(numOfStairs) 함수의 인자는 아래와 같이 전달됩니다. 계단의 수 N : numOfStairs (1 경우의 수 2 계단 3 -> 경우의 수 4 계단 4 -> 경우의 수 7 계단 5 -> 경우의 수 13 계단 6 -> 경우의 수 24 이렇게 올라갈 수 있는 경우의 수를 나열해보니 규칙이 보이네요~ 앞선 3개의 경우의 수를 합친 값이 해당 계단을 올라갈 수 있는 경우의 수인 피보나치 수열로 되어 있는 것을 알 수 있습니다. 이제 규칙을 알았으니 문제를 풀도록 하겠습니다~ impo.. [Algorithm] 백준 알고리즘 - 1158번 : 요세푸스 문제 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 예제 입력 1 7 3 예제 출력 1 문제 이해 N : 7, K .. [Algorithm] 너비 우선 탐색(BFS, Breadth-First Search) 너비 우선 탐색이란? 루트 노드 (혹은 다른 임의의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방법 시작 노드로부터 가까운 노드를 먼저 방문하고 떨어져 있는 정점을 나중에 방문하는 순회 방법 즉, 깊게(deep) 탐색 하기 전 넓게(wide) 탐색하는 방법 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이방법을 사용한다 너비 우선 탐색(BFS)의 특징 직관적이지 않을 수 있다 시작 노드에서 시작해 거리에 따라 단계별로 탐색한다 BFS 재귀적으로 동작하지 않는다 그래프 탐색의 경우 어떤 노드를 방문했었는지 여부를 반드시 검사 해야 한다 이를 검사하지 않으면 무한 루프에 빠질지도 모른다 BFS는 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 자료구조 인 큐(Queue)를 사용한다 선입선.. 이전 1 다음