해당 포스팅 글은 n-puzzle을 풀기 위한 문제 분석과 접근 방법에 대한 글이다. 문제를 해결하기 위한 알고리즘 풀이에 대한 내용이 아니다. 이미 알고리즘에 대한 내용은 인터넷에 많으니 이번 글에서는 문제를 해석하고 접근하는 과정을 알아보자. 문제 문제 내용 슬라이딩 퍼즐이 있다. 다음과 같은 수가 주어질 때 오른쪽 가장 끝 칸은 비어있는 칸이다. 1 2 3 4 5 6 7 8 0 어떤 수와 인접해 있는 네 개의 칸 중에 하나가 비어 있다면, 수를 그 칸으로 이동시킬 수 있다. 물론 표 바깥으로 이동할 수 없다. 우리의 목표는 초기 상태가 주어졌을 때 최소의 이동으로 위와 같은 정리된 표를 만드는 것이다. 다음 예를 보자. 1 0 3 4 2 5 7 8 6 1 2 3 4 0 5 7 8 6 1 2 3 4 ..
🌌프로그래머스 콜라츠 구하기 - 자바(java) 함수로 풀어보기 📚 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복..
🌌프로그래머스 k번째 수 구하기 - 자바(java) 📚 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 👨🏻..
🌌프로그래머스 전화번호목록 - 자바(java) 📚 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 👨🏻💻 제한 조건 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같..
🌌프로그래머스 완주하지 못한 선수 - 자바(java) 📚 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 👨🏻💻 제한 조건 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 📖 예시 💻 입력 ..
🌌프로그래머스 핸드폰 번호 가리기 - 자바(java) 📚 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 👨🏻💻 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 📖 예시 💻 입력 /출력 phone_numberreturn "01033334444""*******4444" "027778888""*****8888" 💻 작성 코드 class Solution { public String solution(String phone_number) { Stri..
🌌프로그래머스 직사각형 별찍기 - 자바(java) 📚 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 👨🏻💻 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 📖 예시 💻 입력 5 3 🖨️ 출력 ***** ***** ***** 💻 작성 코드 import java.util.Scanner; class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); for(int i = 0; i < b; i++)..
- Total
- Today
- Yesterday