# 크기가 작은 부분문자열 # 풀이 과정 이 문제의 핵심은 p의 길이가 최대 18임을 보고 Long 타입을 써야 한다는 것이다 처음에는 p와 t의 길이를 사용해서 반복하려면 어떻게 for문을 돌려야하는지가 헷갈렸다 t의 길이에서 p의 길이를 뺀 후 + 1 을 해주면 되었다 그런데 아무 생각없이 int형으로 선언해서 문제를 해결하려고 하니까 풀리지 않았다 문제를 다시 잘 보니 p의 최대 길이가 18이기 때문에 Long 타입을 써야했다 그거 말고는 substring 메소드와 Long.parseLong을 사용해서 String과 Long 사이의 타입 변환만 잘 해주면 되는 문제이다 # 정답 코드 class Solution { public int solution(String t, String p) { //p의 최..
알고리즘
# 디펜스 게임 # 이 과정 브루트포스로 모든 경우의 수를 구한다면 쉽게 풀 수 있는 문제겠지만 이 문제에서 주어진 범위가 매우 크다 따라서 브루트포스가 아닌 다른 알고리즘을 사용해야 한다 최대 몇 라운드까지 방어가 가능한지를 구해야 하기 때문에 우선순위 큐를 사용해서 최대로 방어할 때의 값을 출력해주면 된다 # 정답 코드 import java.util.*; class Solution { public int solution(int n, int k, int[] enemy) { // 준호의 처음 병사 수 n // 사용 가능한 무적권의 횟수 k // 공격 병사 수 배열 enemy // 최대 몇라운드까지 방어 가능한지 구하기 int answer = enemy.length; Queue pq = new Priori..
브론즈 5 문제부터 시작해서 차례 차례 단계를 높여가며 알고리즘 공부를 다시 본격적으로 시작할 계획이다 오늘은 그 첫문제로 4434 평균은 넘겠지를 풀어보았다 # 백준 4434 평균은 넘겠지[브론즈 1] # 풀이 과정 우선 처음에는 평균보다 크거나 같은 것으로 구해서 답이 계속 이상하게 나왔다 평균 초과인 학생만 구하는 것이었다 그리고 숫자 타입을 어떤 것을 쓰느냐가 이 문제를 해결하는데 중요한 요소였다 처음에는 정답만 double형으로 선언하고 나머지는 int로 선언했더니 계속 답이 0.0% 가 나와서 조금 헤맸다 그리고 소수점 셋째 자리를 출력하는 방법을 알고 있어야 하는 문제다 # 자바 소수점 원하는 자리만큼 출력하는 방법 1. System.out.ptrintf() 사용 2. String.forma..
백준 브론즈 1 단계 문제이다 알고리즘 공부를 다시 시작하면서 자바와 자바스크립트로 둘 다 문제 푸는 연습을 하기 위해서 일단 익숙한 자바로 문제 풀이를 한 후에 자바스크립트로 바꾸는 연습을 하려고 한다 일단 자바로 문제를 해결한 코드를 올려보겠다 # 문제 해결 방법 입력으로 주어진 String의 앞글자만 따서 해당 글자를 숫자로 바꾸어 배열의 인덱스로 사용한다 입력을 다 마치고 나면 다시 한번 배열을 돌면서 5 이상의 인덱스가 있는지 확인한다 있다면 해당 인덱스를 다시 알파벳으로 변경해서 String에 추가한다 없다면 "PREDAJA" 를 출력한다 # 문제 코드 package BRONZE; import java.util.Scanner; public class Main { public static voi..
자바스크립트로 알고리즘 문제를 해결하는 연습을 해야겠다는 생각에 가장 쉬운 왕초보 문제부터 풀어볼 것이다 그 전까지 알고리즘은 전부 다 자바로 풀었기 때문에 매우 쉬운 문제임에도 자바스크립트로 해결하는게 헷갈린다.. 오늘 처음으로 자바스크립트를 사용한 알고리즘 문제 풀이 연습을 하였고 그 코드를 올려보려고 한다 A와 B의 값을 입력받아 더해서 출력만 하면 되는 문제이다 자바스크립트를 사용해서 백준 문제를 풀 때에는 초반에 세팅 코드가 몇줄 필요하다 구글링을 통해서 세팅 코드를 보고 적용해보았다 아래는 정답 코드이다 const fs = require('fs'); const inputData = fs.readFileSync(0, 'utf8').toString().split(' '); const A = par..
풀이 과정 String으로 주어진 문장을 받은 후 하나씩 잘라서 모음인지 아닌지 확인 후 list에 넣는다. 그리고 list의 값들을 다시 String으로 출력한다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Solution_4406_모음이보이지않는사람 { //주어진 String에서 a, e, i, o, u 를 //삭제하는 문제 static int T; //테스트 케이스 static String str; //주어지는 단어 static St..
풀이 과정 사람들의 소득을 모두 더한 뒤 평균을 구한다. 배열을 for문으로 돌면서 평균보다 작거나 같은 개수를 세어준다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_10505_소득불균형 { //전체 소득의 평균을 구한 뒤 //평균 이하의 소득인 사람이 몇명인지 구하는 문제 static int T; //테스트 케이스 static int N; //사람의 수 static int [] arr; //소득값을 넣어줄 배열 public static void mai..
풀이 과정 운동 시간의 범위만 잘 체크해주면 굉장히 쉽게 풀리는 문제이다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_3431_준환이의운동관리 { //1주일에 L분 이상 U분 이하의 운동을 하여야 함 //이번 주에 X분 만큼 운동했음 //제한되어 있는 시간을 넘은 운동을 한 것인지, //그것이 아니라면 몇 분 더 운동을 해야 제한을 맞출 수 있는지 static int T; //테스트 케이스 static int L, U, X; //L분 이상, U분 이하 ..