본문 바로가기

Algorithm

(390)
[프로그래머스(Java)] 다음에 올 숫자 Level. 0 문제 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. * 제한사항 - 2 < common의 길이 < 1,000 - -1,000 < common의 원소 < 2,000 common의 원소는 모두 정수입니다. - 등차수열 혹은 등비수열이 아닌 경우는 없습니다. - 등비수열인 경우 공비는 0이 아닌 정수입니다. 풀이 class Solution { public int solution(int[] common) { int answer = 0; int a = common[1] - common[0]; int b = common[2] - common[1]; if(a==b) answer = common[co..
[프로그래머스(Java)] 최빈값 구하기 / sort Level. 0 문제 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. * 제한사항 - 0 < array의 길이 < 100 - 0 ≤ array의 원소 < 1000 풀이 import java.util.Arrays; class Solution { public int solution(int[] array) { int answer = 0; int[][] counts = new int[1001][2]; int maxn = 0; for(int i=0; i { return o2[1]!=o1[1] ? o2[1]-o1[1] : o2[0]-o1[0]..
[프로그래머스(Java)] OX퀴즈 Level. 0 문제 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요. * 제한사항 - 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다. - 1 ≤ quiz의 길이 ≤ 10 - X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다. - X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다. - -10,000 ≤ X, Y ≤ 10,000 - -20,..
[프로그래머스(Java)] 코드 처리하기 Level. 0 문제 문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0부터 code의 길이 - 1까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다. mode가 0일 때 - code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. - code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다. mode가 1일 때 - code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. - code[idx]가 "1"이면 mode..
[프로그래머스(Java)] 한 번만 등장한 문자 / Collectors.groupingBy(), Collectors.joining() Level. 0 문제 문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다. * 제한사항 - 0 < s의 길이 < 1,000 - s는 소문자로만 이루어져 있습니다. 풀이 import java.util.Map; import java.util.TreeMap; // Key를 기준으로 자동정렬 class Solution { public String solution(String s) { String answer = ""; Map m = new TreeMap(); for(int i=0 ; i< s.length(); i++){ m.put(s.char..
[프로그래머스(Java)] 배열 만들기 2 / Integer.toBinaryString Level. 0 문제 정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다. * 제한사항 - 1 ≤ l ≤ r ≤ 1,000,000 풀이 import java.util.ArrayList; class Solution { public int[] solution(int l, int r) { int[] answer = {-1}; ArrayList list = new ArrayList(); for(int i=l/5; i r) break; String str = Integer.toString(i*5); str =..
[프로그래머스] 스킬트리 Level.2 문제 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. *..
[프로그래머스] 방문 길이 Level. 2 문제 게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다. - U: 위쪽으로 한 칸 가기 - D: 아래쪽으로 한 칸 가기 - R: 오른쪽으로 한 칸 가기 - L: 왼쪽으로 한 칸 가기 캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다. 예를 들어, "ULURRDLLU"로 명령했다면 1번 명령어부터 7번 명령어까지 다음과 같이 움직입니다. 8번 명령어부터 9번 명령어까지 다음과 같이 움직입니다. 이때, 우리는 게임 캐릭터가 지나간 길 중 캐릭터가 처음 걸어본 길의 길이를 구하려고 합니다. 예를 들어 위의 예시에서 게임 캐릭터가..