본문 바로가기

기록/알고리즘

(28)
[Programmers][Java] 소수 만들기 https://programmers.co.kr/learn/courses/30/lessons/12977?language=java 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 배열 내의 숫자를 임의로 3개를 뽑아 소수가 되는지 확인하는 작업이다. (중복 허용하지 않음) 따라서 이 문제를 배열 내 숫자 중 3개를 조합으로 뽑고, 소수를 판별하는 부분으로 나누어 풀었다. package com.company; import java.lang.reflect.Array; import java.util..
[Programmers][Java] 실패율 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr import java.util.*; public class Main { public static void main(String[] args) { int N = 5; //스테이지 수 int[] stages = {2, 1, 2, 6, 2, 4, 3, 3}; //도전중인 스테이지 번호 //스테이지 당 클리어한 사람 기록 int[] clear = new int[N + ..
[Java] Builder 패턴 Builder 패턴 생성자를 사용하다 보면 많은 파라미터들을 할당해야할 때가 있다. 파라미터를 할당하는 과정에서 우리는 총 세가지 방법을 사용할 수 있다. 점층적 생성자 패턴 자바 빈즈 패턴 빌더 패턴 점층적 생성자 패턴 필수 매개변수만 받는 생성자, 선택 매개변수를 n개까지 받는 생성자를 하나씩 생성한다. 그리고 필요에 따라 해당하는 생성자를 호출하여 사용하는 방식이다. 불가능한 방법은 아니지만, 실제 사용하기에 의미를 파악하기도 어렵고, 클라이언트 코드를 작성하거나 읽기 어려운 단점이 생긴다. 이 단점을 보완하기 위해 자바 빈즈 패턴이 등장했다. 자바 빈즈 패턴 매개변수가 없는 생성자로 객체를 먼저 만들고, setter 메소드로 매개변수의 값을 설정하는 방식이다. 인스턴스를 만들기 쉽고, 읽기에도 훨..
[카카오] 신고 결과 받기 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 지난 카카오 신입 공채 문제였다. 당시에 나도 도전했으나 몇개 시간초과로 제출했던 기억이 있어서 다시 풀어봤다. 조금 고민을 해보고 몇가지 힌트를 얻어서 다시 풀어서 성공했다. 문제에서 중복으로 신고를 받지 않는 부분에 주목하여 HashSet을 이용하여 문제를 해결했다. 원래는 해시에 String이나 Integer타입으로만 풀이를 적용했더니 시간초과가 발..
[백준][JAVA] 큰 수 A+B https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net import java.math.BigInteger; import java.util.Scanner; public class Q10757 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); BigInteger A = new BigInteger(scan.next()); BigInteger B = new BigInteger(scan.next()); A = A.add(B); System.out.println(A); } }..
[Programmers] [JAVA] 더 맵게 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr package com.company.practice.programmers; import java.util.*; public class Heap01 { public int solution(int[] scoville, int K) { int answer = 0; PriorityQueue heap = new PriorityQueue(); for (int ..
[프로그래머스] 모의고사 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr class Solution { public int[] solution(int[] answers) { int[] student1 = {1, 2, 3, 4, 5}; int[] student2 = {2, 1, 2, 3, 2, 4, 2, 5}; int[] student3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; int[] result = new in..
[SQL] [프로그래머스] 입양 시각 구하기(2) 풀이 문제의 접근법은 0~23을 가지고 있는 다른 테이블과 조인하여 값을 도출하는 개념이다. MySQL에서는 변수를 생성하고 Oracle은 Level을 이용하여 값을 만들어준다. --MySQL-- SET @hour := -1; SELECT (@hour := @hour + 1) as HOUR, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT FROM ANIMAL_OUTS WHERE @hour < 23; --Oracle-- SELECT D.lv, NVL(E.cnt,0) FROM (SELECT TO_CHAR(DATETIME,'HH24') as HOUR ,COUNT(*) cnt FROM ANIMAL_OUTS GROUP BY TO_..

LIST