알고리즘
프로그래머스 lv.2 - 92335 k진수에서 소수 개수 구하기
프로그래머스 lv.2 - 92335 k진수에서 소수 개수 구하기 문제 풀이 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, ..
프로그래머스 Lv.1 - 118666 성격 유형 검사하기
프로그래머스 Lv.1 - 118666 성격 유형 검사하기 문제 풀이 문제 설명 나만의 카카오 성격 유형 검사지를 만들려고 합니다. 성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다. 지표 번호성격 유형 1번 지표 라이언형(R), 튜브형(T) 2번 지표 콘형(C), 프로도형(F) 3번 지표 제이지형(J), 무지형(M) 4번 지표 어피치형(A), 네오형(N) 4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다. 검사지에는 총 n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다. 매우 비동의 비동의 약간 비동..
프로그래머스 Lv.1 - 12954 x만큼 간격이 있는 n개의 숫자
프로그래머스 Lv.1 - 12954 x만큼 간격이 있는 n개의 숫자 문제 풀이 문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; if(x == 0) { return answer; } for(int i = 0; i < n; i++) { long v = (long)x * (i + 1); answer[i] = v; } ..
프로그래머스 Lv.1 - 12921 소수 찾기
프로그래머스 Lv.1 - 12921 소수 찾기 문제 풀이 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 import java.lang.Math; import java.util.Arrays; class Solution { /** 에라스토테네스의 체 방식의 구현 정확도 테스트 테스트 1 〉통과 (0.80ms, 79.3MB) 테스트 2 〉통과 (0.87ms, 76.8MB) 테스트 3 〉통과 (0.95ms, 79MB) 테스트 4 〉통과 (0.99ms, 67.6MB) 테스트 5 〉통과 (0.97m..
백준 실버II - 11725 트리의 부모 찾기
백준 실버II - 11725 트리의 부모 찾기 문제 풀이 문제 설명 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); // input : count int n..
프로그래머스 Lv.2 - 42586 기능개발
프로그래머스 Lv.2 - 42586 기능개발 문제 풀이 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 import java.util.*; i..
프로그래머스 Lv.1 - 77484 로또의 최고 순위와 최저 순위
프로그래머스 Lv.1 - 77484 로또의 최고 순위와 최저 순위 문제 풀이 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구..
프로그래머스 Lv.1 - 12910 나누어 떨어지는 숫자 배열
프로그래머스 Lv.1 - 12910 나누어 떨어지는 숫자 배열 문제 풀이 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 import java.util.Arrays; class Solution { public int[] solution(int[] arr, int divisor) { int[] answer = Arrays.stream(arr) .filter(i -> i % divisor == 0) .sorted() .toArray(); ..
프로그래머스 Lv.1 - 92334 신고 결과 받기
프로그래머스 Lv.1 - 92334 신고 결과 받기 문제 풀이 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi",..
프로그래머스 Lv.2 - 60057 문자열 압축
프로그래머스 Lv.2 - 60057 문자열 압축 문제 풀이 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 ..