Algorithm 306

한수

📍 문제 설명 💡 접근 99이하는 모두 한수라고 볼 수 있다. 1000보다 작은 수만 들어온다고 했으니 100~999 사이만 걸러내주면된다. 👩‍💻 코드 import java.io.IOException; import java.util.*; class Main { public static void main(String[] args) throws IOException { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); //1~99까지는 확인안해도되고 //100부터는 차이가 일정한지 봐야함 System.out.println(solution(n)); } private static int solution(int n) { int answer = 0; //그 ..

Algorithm/baekjoon 2021.12.26

제로

📍 문제 설명 💡 접근 힌트가 너무 잘나와있어서 stack으로 바로 풀었다.. 👩‍💻 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; class Main { public static void main(String[] args) throws IOException { Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr = new int[n]; for(int i = 0; i < arr.length; i++) { arr[i] = kb.nextInt(); } Stack stack = n..

Algorithm/baekjoon 2021.12.26

덩치

📍 문제 설명 💡 접근 씨름선수 문제랑 똑같은 문제였다. 근데 여기서는 선발인원 수가 아닌 각 사람의 랭크를 찾는거여서 원본 배열을 건들지 않고 2중 반복문 이용하여 풀었다.. 👩‍💻 코드 import java.util.*; class Main { public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); ArrayList list = new ArrayList(); for(int i = 0; i < n; i++) { int w = kb.nextInt(); int h = kb.nextInt(); list.add(new People(w, h)); } f..

Algorithm/baekjoon 2021.12.26

크로아티아 알파벳

📍 문제 설명 💡 접근 각 문자열로 진입할때를 확인 i+1 i+2를 확인하기 위해 문자열에 공백을 넣었음 👩‍💻 코드 import java.util.*; class Main { public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); String s = kb.next(); s += " "; //알파벳 갯수 int answer = 0; //c나 d나 l이나 n이나 s나 z의 입력으로 들어올 때 확인해보기 for(int i = 0; i < s.length(); i++) { char c = s.charAt(i); //다음문자가 = or - 인지 확인 if(c == 'c') { if(s.cha..

Algorithm/baekjoon 2021.12.24

그룹 단어 체커

📍 문제 설명 💡 접근 각 단어에 대해 한글자씩 접근하여 바로 앞의 단어에 대해서 같지 않을때 앞의 이전 문자열들에 대해서 탐색하는 식으로 접근하였음. 예제 입력 5가지에 대해서는 제대로 출력이 되는데 틀렸다고만 나온다. 시간초과 / 메모리초과 / 기타 에러가 아니다. 접근 로직은 비슷했으나 찾지는 못해서 타블로그를 참고 좀 했다. 👩‍💻 코드 import java.util.*; class Main { public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); String[] arr = new String[n]; for(int i = 0; i < n..

Algorithm/baekjoon 2021.12.24

셀프넘버

📍 문제 설명 💡 접근 1부터 만들어지는 수열을 10000까지 정의해보자. 각 자릿수를 더한 값을 구하는게 핵심이다. 셀프 넘버가 아닌 것들을 배열에 기록해놓고 셀프 넘버인 인덱스만 출력했다. 👩‍💻 코드 import java.util.*; class Main { public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int[] arr = new int[10001]; for(int i = 1; i < arr.length; i++) { if(arr[i] != 0) continue; int n = i; //수열 구하기 while(n < 10000) { //n과 n의 각 자릿수를 더한 값을..

Algorithm/baekjoon 2021.12.24

최대점수 구하기(냅색 알고리즘)

dy[j]는 나에게 j분이 주어졌을 때 얻을 수 있는 최대 점수이다. d[16]은 16분이 주어졌을 때 얻을 수 있는 최대 점수 앞의 문제 처럼 앞에서 부터 탐색하면 해당 문제를 2번 풀 수 있게 되어버린다! 그렇기 때문에 뒤에서부터 탐색하여 1번씩만 풀 수 있게 한다. 갯수가 무한정이다 - 앞에서부터 갯수가 무한정이 아니다 - 뒤에서부터 i = 0일 때 j = 20 ~ 5까지 돔 - 제한 시간이 5분이라서 20 ~ 5분 문제 풀 수 있음 dy[20] = Math.max(dy[20], dy[20-5]+10) = 10 - 5분 걸리는 10점 문제 하나 풀음 ... dy[5] = Math.max(dy[5], dy[5-5]+10) = 10 - 5분 걸리는 10점 문제 하나 풀음 i = 1일 때 j = 20 ~..

Algorithm/inflearn 2021.12.22

10.자물쇠와 열쇠

📍 문제 설명 https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 💡 접근 일단 key는 영역을 벗어나도 되니 lock의 범위를 넓혀서 key의 제일 아래부분과 lock의 제일 윗부분부터 맞춰가보도록 한다. key인 M은 항상 lock인 N이하라고 했으니 같을 경우가 최대라고 생각해보면 NXN 이라면 N배만큼 큰 자물쇠를 만들어도 풀리는 문제였다. 처음과 끝까지 돌지 않기 위해 범위를 지정해놓고 돌리려했는데, 4X4로 그려서 보니 생각하는 범위가 아니여서 전체 ..

Algorithm/이코테 2021.12.11

9.문자열 압축

📍 문제 설명 💡 접근 x개로 잘랐을 때의 문자열을 잘 넣어주긴 했는데 마지막 배열의 문자열의 처리와 정확히 x개로 잘리지 않았을때 남는 문자열에 대한 처리에 대해서 좀 많이 고민했다. 빈칸을 하나넣어줘서는 1개로 잘랐을 때의 마지막 문자열 처리밖에 되지 않아서 마지막 배열일 때 cnt 값에 따라 문자열이 더해질 수 있도록 했고 정확히 x개로 잘리지 않았을 때는 자른 문자열 subStr 변수에 그대로 남아있을테니 모든 처리 후 마지막에 해당 문자열을 넣어줘서 처리했다. 👩‍💻 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String s..

Algorithm/이코테 2021.12.11

8.문자열 재정렬

📍 문제 설명 💡 접근 문자, 숫자 범위로 나누어서 문자는 문자대로 더하고 숫자는 숫자자체로 더하기 👩‍💻 코드 import java.util.Arrays; public class Main { public static String solution(String s) { String answer = ""; int n = 0; char[] c = s.toCharArray(); Arrays.sort(c); System.out.println(c); //문자 먼저 더하기 for(int i = 0; i < c.length; i++) { if(Character.isAlphabetic(c[i])) answer += c[i]; } //숫자 더하기 for(int i = 0; i < c.length; i++) { if(Cha..

Algorithm/이코테 2021.12.11