반응형

Java/Algorithm 54

[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-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). 먼저 생각해..

[Java-Algorithm] 백준 3085 사탕게임 풀이

문제 : https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 풀이 : 브루트 포스 문제이다. 결국 모든 경우의 수를 다 체크해야된다는건데.... for문의 집합체인것 같다.. 경우의수를 모두 체크해주면된다. 1). 오른쪽 왼쪽을 바꿨을때 => 가로 2). 위아래를 바꿨을때 => 세로 대각선은 제외하고 두가지만 체크해서 먹을 수 있는 갯수를 확인한다. static int result; static char[][] arr; public static void main(String[] args) throws NumberFormatException, IOException {..

[Java-Algorithm] 백준 17298 오큰수 풀이

문제 : https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 풀이 : 처음에 보자마자 아 for문 많이 돌려서 찾으면 금방하겠다 였다... 아직도 문제푸는데에 좋은 방법을 생각해 내지 못하나보다 했다~ ㅜ 문제 밑에 보면 어떤 문제인지 힌트 처럼 볼수 있는것이 있는데, 스택이 적혀있던것..! 어떻게 스택을 사용해서 풀수 있나 엄청 고민했다 ... 결국 나온풀이는. 현재 값을 기준으로 전에있던 값들을 비교하여 뒤에서 앞(키포인트)을 비교하는 방법으로 생각했다. 그..

[Java-Alogrithm] 백준 17413 단어 뒤집기 2 풀이

문제 : https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 : 처음엔 어떻게 해야되지 고민했다. 하나하나 스택과 Queue를 같이 이용해서 날려야되나 했는데 오히려 간단하게 풀릴것같아 스택 하나로만 해결했다. 관건은 ""이거로 거꾸로 Flag를 잡아주는것..!!!!! public static void main(String[] args) throws IOException { Scanner sc = new Sca..

반응형