[알고리즘] 백준 10818번 - 최소, 최대 문제 풀이 (Java)
·
알고리즘
백준 10818번 문제 "최소, 최대"를 풀면서 알게 된 내용을 공유하려 한다.두 가지 방법을 사용할건데 하나는 정렬, 다른 하나는 단일 순회 방식을 사용할 것이다.이 문제는 N개의 정수가 주어졌을 때 최솟값과 최댓값을 구하는 간단한 문제다.처음 작성한 코드 (정렬 사용)처음에는 배열을 정렬한 후 첫 번째 요소와 마지막 요소를 출력하는 방식으로 접근했다.import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); St..
[알고리즘] 백준 3052번 - 나머지 문제 풀이와 자바 Stream API 활용하기 (Java)
·
알고리즘
오늘은 백준 3052번 '나머지' 문제를 풀어보았다.알고리즘 공부를 시작한 지 얼마 되지 않아 기초적인 문제부터 차근차근 풀어나가고 있는데,이 문제에서 Java의 Stream API를 활용해볼 수 있어서 좋은 경험이 되었다.문제 요약 문제 해석과 접근 방법이 문제는 단순해 보이지만 몇 가지 중요한 개념을 포함하고 있다.우선 나머지 연산(modulo)을 이해해야 하고, 중복된 값을 제거하는 방법을 알아야 한다. 처음에는 HashSet을 사용해 중복을 제거하는 방법을 생각했다.HashSet은 중복을 허용하지 않는 자료구조이기 때문이다. 하지만 최근에 Java Stream API에 대해 공부하고 있어서 이를 활용해보고 싶었다.Stream API를 사용하면 컬렉션의 요소를 함수형 프로그래밍 방식으로 처리할 수 ..
[알고리즘] 백준 2675번 - 문자열 반복 문제 풀이 (Java)
·
알고리즘
문제 소개백준 2675번은 "문자열 반복"이라는 제목의 문제다.이 문제는 주어진 문자열의 각 문자를 특정 횟수만큼 반복하여 새로운 문자열을 만드는 것이 목표이다. 문제 해석이 문제는 다음과 같은 내용을 담고 있다. 테스트 케이스의 개수 T가 주어진다 (1 ≤ T ≤ 1,000).각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8)과 문자열 S가 공백으로 구분되어 주어진다.S의 길이는 적어도 1이며, 20글자를 넘지 않는다.S에는 QR Code "alphanumeric" 문자만 들어있다 (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./:).각 테스트 케이스에 대해 S의 각 문자를 R번 반복한 새 문자열 P를 출력해야 한다.예시:입력: 3 ABC일 경우출력: AAABBBCCC ..
[알고리즘] 백준 15552 빠른 A+B - Java
·
알고리즘
백준 문제를 풀다가 보니 정말 인상 깊었던 알고리즘 문제가 있어서 글로 남기고자 한다.바로 15552번의 빠른 A+B인데 시간제한이 있다는 점이 너무 재밌었다.*시간제한은 Java기준 1.5초, 즉 1500ms 이내여야 한다.* 시작하기 전에 필자는 수업시간에 배운 BufferedReader을 사용해야겠다고 마음먹고 시작했다.Scanner을 쓰면 시간초과가 된다.먼저 이 둘의 차이를 알아보고자 한다.Scanner과 BufferedReader의 차이점Scanner의 동작 방식Scanner는 내부적으로 정규표현식을 사용하여 입력을 파싱한다. 이 과정에서 추가적인 처리시간이 필요하다.데이터를 읽을 때마다 시스템 콜이 발생하여 매번 바이트 단위로 읽어온다.동기화 처리가 들어가 있어 멀티스레드 환경에서는 안전하지..