반응형

Java 79

[Algorithm] 프로그래머스 신규 아이디 추천 Java 풀이

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 정규식을 잘 알았더라면 아주 간단하게 풀수있었을것 같지만... 정규식을 잘몰라 정규식은 쓸수 있는데로만 사용하고, 나머지는 그냥 짜게되었다... 이전 회사에서도 아래 구조 처럼 사용해봐서 메서드를 한번에 호출해서 사용했다. class Solution { public String solution(String new_id) { String answer = new makeNewId(n..

[Algorithm] Programmers 로또의 최고순위와 최저순위 풀이

순위를 어떻게 할지만 잘 결정하면 답이 나온 문제였다.. class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = {}; //0의 갯수를 찾는다. //맞는 번호 갯수를 찾는다. int zeroCnt = 0; int winCnt = 0; for(int lotto : lottos){ if(lotto == 0){ zeroCnt++; }else{ for(int win : win_nums){ if(lotto == win){ winCnt ++; //체크하면 두번은 없으니 break; break; } } } } answer = new int[2]; answer[0] = Math.min(7 - (winCnt + zeroCn..

[Algorithm] Programmers 신고 결과 받기 풀이

문제 : https://programmers.co.kr/learn/courses/30/lessons/92334?language=java 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 해설 : 우선 중복된 신고는 없다 라는것에 Set을 생각해서 넣어두고 사용했다 혹자는 stream에 distinct를 사용해서 중복을 제거햇던데... ㄷㄷ.. 열심히 배워보자.. 1). 나를 신고한 사람을 Set에 담아두고 나를 신고한 사람이 k명 이상일때 신고한 사람에게 메세지를 보내는것으로 작성하였다. 풀이 : imp..

[Java-DesignPattern] Facade Pattern이란? 퍼사드 패턴 설명

퍼사드 패턴은 시스템의 복잡성을 감추고, 사용자(Client)가 시스템에 접근할 수 있는 인터페이스(Interface)를 사용자(Client)에게 제공하는 방식이다. 따라서 퍼사드 패턴은 기존의 시스템에 인터페이스를 추가함으로, 복잡성을 감추기 위해 사용 백문이 불여일타 코드를 보고 머릿속에 정리해두자. 순서 -> 1). 관련 interface를 만든다. public interface FacadeCoffee { void make(); } 2). 세부 Class를 만든다. public class FacadeCappuccino implements FacadeCoffee { @Override public void make() { System.out.println("Cappuccino::make()"); } }..

[Java-DesignPattern] Factory Pattern이란? 팩토리패턴 설명

팩토리패턴이란? 상위 클래스(부모)와 하위 클래스(자식)가 있을 때, 별도의 팩토리 클래스를 사용하여 하위 클래스의 인스턴스를 생성하는 패턴. 팩토리패턴이 이거구나 하기 전까지는 무의식 중으로 사용했을 수 있다고 본다. 코드를 보고 확인하자. Animal.java -> 부모클래스 public class Animal { public Animal(){ } //Animal의 메소드 } 자식 1 Dog public class FactoryDog extends Animal{ public FactoryDog(){ // 생성자 } public FactoryDog(String data){ return; } //Dog의 메소드 ... public String toString(){ return "Dog"; } 자식 2 C..

[Java] Lambda 개념 및 사용

1). 람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어다. 2). 람다의 특징 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링 (Curring) 3). 익명함수? 함수의 이름이 없는 함수. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있다. 이 일급 객체란? : 일반적으로 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체를 가르킨다. 함수를 값으로 사용 할 수도 있으며 파라미터로 전달 및 변수에 대입과 같은 연산들이 가능하다. 4). 람다의 장단점 장점 1. 코드의 간결성 - 람다를 사용하면 불필요한 반복문의 삭제가 가능하며..

[Java-Algorithm] 백준 15652 N과 M(4) 풀이

1). 문제 : https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2). 풀이 : 이어서 수열이 숫자 순서대로만 나와야 될때의 문제이다. 지난 번과 똑같이 이전 값을 기준으로 비교하면 된다..! static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..

[Java-Algorithm] 백준 15651 N과 M (3) 풀이

1). 문제 : https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2). 풀이 : 기존에 N과 M 1,2를 풀었다면 쉽게 풀수있을것이다. 기존에는 중복되지 않는 숫자의 조합으로 순열을 만드는것이었는데, 이번에는 숫자의 중복이 가능하다. 그렇다면 visited의 역할이 사라진다고 볼수있는것!!!ㅎㅎ 코드를 보자 일단 기존 코드에서 visited만 없앴는데 시간초과가 떠서, StringBuilder로 변경하고 int[] arr에 값을 넣어주는 fo..

[Java-Algorithm] 백준 15650 N과 M (2) 풀이

1). 문제 : https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2). 풀이 : N과 M (1) 에서 수열이 순서대로 인 것들만 출력하는 문제. 이전 숫자와 다음숫자의 비교부분만 추가해주면 된다. 순열만드는 로직만 알고있다면 간단하게 해결할수있다. public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputSt..

[Java-Algorithm] 백준 15649 N과 M(1) 풀이

1). 문제 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2). 풀이 : 왜 풀어도 풀어도 빠르게 안나오는지 ㅠ 휴 사전식으로 정렬된 순서가 있는 조합 즉 순열을 구하는문제이다. 기본적으로 필요한것 1. 숫자가 담겨있는 배열 = arr[] 2. 수열이 만들어질때 담아놓을 빈 배열 = output[] 3. 숫자를 사용했는지 체크여부를 위한 배열 = visited[] 이 세가지를 가지고 지지고 볶으면 된다!. 푸는 방법 1). 먼저 생각해..

반응형