본문 바로가기

구현178

[자바] 프로그래머스 - 수열과 구간 쿼리 2 (Lv0, Java) 목차 문제 : Programmers - 수열과 구간 쿼리 2 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 구현 문제에서 제시된 대로 구현해주면 됩니다. 풀이 arr[s], arr[s+1], ... , arr[e-1], arr[e] 중 k보다 큰 값들 중 가장 작은 값을 찾는 문제이다. 문제만 잘 이해했다면 반복문을 잘 사용해서 풀 수 있다. k보다 큰 값 중 '가장 작은 값'이 문제일 수 있는데, 애초에 나올 수 있는 수치보다 큰 값을 무한대로 정하고 그 값을 갱신하면서 진행하면 편하다. 이 문제의 경우 0 ≤ arr의 원소 ≤ 1,000,000 이므로 1000001 이상으로 잡으면 된다. 아니면 그냥 Intege.. 2023. 6. 16.
[ABC301] B - Fill the Gaps (AtCoder Beginner Contest 301 in Java) 목차 문제 : ABC301 - B 필요 알고리즘 구현 문제에서 제시된 방법대로 구현하면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 직전 숫자와의 차이가 1 이상이라면 사이값을 채워넣어주면 된다. List res = new ArrayList(); res.add(arr[0]); for (int i = 1; i < n; i++) { if (Math.abs(arr[i-1] - arr[i]) arr[i]; j--) res... 2023. 5. 13.
[ABC301] A - Overall Winner (AtCoder Beginner Contest 301 in Java) 목차 문제 : abc301 - A 필요 알고리즘 구현, 문자열 문제에서 제시된 대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문자열의 각 문자를 읽는방법을 안다면 풀 수 있다. T와 A가 나온 갯수를 세서 더 많은 쪽의 문자를 출력해주면 된다. 다만 갯수가 동일하다면 최대치에 더 먼저 도달한 문자를 출력해줘야 한다. 이 부분은 코드에서 'c' 변수로 처리했다. 코드 : github import jav.. 2023. 5. 13.
[자바] 프로그래머스 - 수열과 구간 쿼리 4 (Lv0, Java) 목차 문제 : Programmers - 수열과 구간 쿼리 4 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 구현 문제에서 제시된 대로 구현해주면 됩니다. 풀이 문제에서 제시된대로 구현해주면 된다. 별다른 알고리즘 없이 그냥 배열순회만 사용해 풀어도, 총 1000개의 쿼리에 대해 각 O(arr의 길이)만큼 필요하므로, O(1000^2)으로 풀 수 있다. 예를들어 [2, 2, 4, 5, 4]가 query [0, 3, 3]을 통해 [3, 2, 4, 6, 4]로 바뀌는 과정은 아래와 같다. 이하 코드는 약간 효율성을 더하기 위해 인덱스 s부터 e까지 모두 순회하지 않고, 1. s이상이면서 k의 배수인 가장 작은 수를 우선 .. 2023. 5. 10.
[자바] 백준 1790 - 수 이어 쓰기 2 (java) 목차 문제 : boj1790 필요 알고리즘 구현, 수학 수학적 사고를 통해 구현할 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 N이 1억까지이므로, 언어에 따라 실제로 수를 이어봐서 풀 수도 있어 보인다. 실제로 파이썬은 이렇게 풀 수 있음을 확인했다. 자바는 안될 것 같다. 우선 N이 100,000,000인 경우는 제외하고 최대 8자리까지 가능하다고 생각해보자. 그렇다면 자리수가 i개인 숫자는 ix9x.. 2023. 5. 9.
[자바] 백준 25206 - 너의 평점은 (java) 목차 문제 : boj25206 필요 알고리즘 구현, 문자열 문자열을 잘 파싱해서 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 구현 로직은 다음과 같다. 1. 20줄 각각을 받으면서 첫 번째 문자는 필요없으니 버리고, 세 번째 입력값이 'P' 라면 다음 줄로 넘어간다. 2. 2번째 값을 double로 받은걸 grade, 3번째는 double로 과목평점을 변환해서 받은걸 rating 이.. 2023. 4. 15.
[자바] 백준 15025 - Judging Moose (java) 목차 문제 : boj15025 필요 알고리즘 구현 문제에서 제시된 대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 해석만 잘하면 제시된 대로 풀면 된다. 로직을 정리하면 다음과 같다. 1. L과 R을 입력받는다. 2. L과 R이 둘 다 0이면 "Not a moose" 3. L과 R 중 큰 값을 B라고 해보자. 4. L == R 이라면 "Even [B*2]"를 출력한다. 5. 그렇지 않다면 "Odd [B*.. 2023. 4. 14.
[자바] 백준 1205 - 등수 구하기 (java) 목차 문제 : boj1205 필요 알고리즘 구현 결국 문제에서 제시된 방식대로 등수를 구해주면 되는 구현문제이다. 다만 실수하가기가 쉽게 문제가 구성되어 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 예외를 잘 처리해줘야 하는 구현 문제이다. 차분하게 조건들 다 따져가면서 구현해주면 된다. 1. n = 0일 경우 답은 항상 1이다. (P의 최소값은 10 이므로 불가능한 경우가 없다.) if (n == 0) { Syst.. 2023. 4. 5.
[자바] 백준 23813 - 회전 (java) 목차 문제 : boj23813 필요 알고리즘 구현, 문자열, 수학 문자열로 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제 제한이 짧아서 그냥 문자열 자체로 자르고 붙이고 Integer.parseInt로 정수로 변경해주면서 구현해도 상관없다. 내 경우엔 숫자로 바꿔서 계산했다. 우선 mult는 입력으로 들어온 숫자의 자리수-1 만큼 0이 붙은 숫자이다. 예를들어 "12345"라면 .. 2023. 4. 3.
[자바] 백준 2033 - 반올림 (java) 목차 문제 : boj2033 필요 알고리즘 구현 반올림을 직접 해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 입력으로 들어온 숫자를 각 자리수별로 배열로 잘라두고 직접 반올림을 진행해주면 된다! 예를들어 "446"일 경우 아래처럼 진행된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main {.. 2023. 4. 2.