Keep Going

빠르지 않아도 꾸준히

분류 전체보기 82

[실버 4] [Java] 백준 10828번: 스택

아이디어그냥 스택 문제이다. count를 이용해서 스택이 현재 어디를 가리키고 있는지 확인한다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class N10828 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] stack = ..

백준/Silver 10:02:39

[실버 4] [Java] 백준 9012번: 괄호

아이디어굉장히 유명한 Stack 문제이다. 하지만 실제로 Stack에 데이터를 넣을 필요는 없고, 그냥 짝만 맞는지, '()'가 ')('로 뒤집어져 처음 나온게 없는지만 확인하면 되니 '('가 나오면 int stack을 ++, ')'가 나오면 --하고, stack이 음수가 되지 않는지만 체크해줬다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class N9012 { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer..

백준/Silver 2025.07.18

[실버 4] [Java] 백준 2164번: 카드2

아이디어처음에는 배열을 계속 만들면서 바꾸고 바꾸고 하는 생각만 났는데, 너무 실행시간이 오래 걸릴 것 같아서 규칙을 찾으려 해봤다(0) N = 1; 1(1) N = 2; 12->2(1) N = 3; 123->32, 32->2(3) N = 4; 1234->342, 342->24, 24->4(1) N = 5; 12345->3452, 3452->524, 524->42, 42->2(3) N = 6; 123456->34562, 34562->5624, 5624->246->64, 64->4(5) N = 7; 1234567->345672, 345672->56724, 56724->7246->462, 462->6괄호 안에 있는 것은 정답수(마지막에 남는 수)의 인덱스이다.N이 3일 때 까지는 그냥 입력된 N에 따라서 출..

백준/Silver 2025.07.17

[실버 4] [Java] 백준 1920번: 수 찾기

아이디어문제의 개념 자체는 굉장히 쉽다. 정수가 있는 첫째 수열과 둘째 수열을 비교해서 둘째 수열의 각 원소가 첫째 수열에 들어있는지 각각 확인해서 있으면 1, 없으면 0을 출력하는 문제이다. 처음에는 int[]와 Arrays를 사용해서 비교했는데, 시간 초과가 걸렸다. Arrays의 anyMatch를 사용했는데 이것도 for문 기반인가보다. 그래서 HashSet으로 첫째 수열을 설정했다. 어차피 각각 확인해야 할 것은 둘째 수열이고, 첫째 수열에 들어갈 입력값에 중복된 수가 있든 없든 상관이 없기 때문이다.그 후 두번째 수열을 Set.contains()를 이용해서 포함되어있는지 확인했다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io...

백준/Silver 2025.07.16

[실버 5] [Java] 백준 11650번: 좌표 정렬하기

아이디어첫째 줄에 좌표의 총 개수인 N을 입력받고두번째 줄부터 좌표를 한 줄씩 입력받는다.x좌표대로 오름차순 정렬을 하되, x좌표가 같으면 y좌표를 오름차순으로 정렬하면 된다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class N11650 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..

백준/Silver 2025.07.15

[실버 5] [Java] 백준 10814번: 나이순 정렬

아이디어먼저 입력할 사람의 정보의 수를 N으로 받고그 다음 나이와 이름 순으로 각 줄에 입력받는다.그 후 나이순으로 정렬하고, 나이가 같다면 입력된 순으로 정렬해야 한다.보통 Arrays.sort()를 사용하면 첫번째 열, 두번째 열 순서로 정렬이 될 것이고, 입력된 순이 배열에 정보가 없으므로 따로 추가해줬다.그리고 배열에 서로 다른 자료형이 들어가야 하므로 Object[][]를 사용하였다.이 배열에는 [나이(int age), 입력순(int i), 이름(String name)]이 저장된다. Comparator의 chain 연결로 첫번째 열, 두번째 열 순으로 정렬해주면 된다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.InputSt..

백준/Silver 2025.07.12

[실버 1] [Java] 백준 2751번: 수 정렬하기 2

아이디어단순히 수를 정렬하는 문제이다. 먼저 몇개의 수가 입력될지 N을 입력받고, 그만큼 수를 입력받아 Array 혹은 list에 입력하면 된다.그 후 sort를 이용해 정렬하면 된다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;public class N2751 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.pa..

백준/Silver 2025.07.11

[브론즈 1] [Java] 백준 1259번: 팰린드롬수

아이디어팰린드롬수는 121, 131, 252와 같이 거꾸로 뒤집어도 같은 수를 말한다.수를 String으로 받은 후 인덱스를 거꾸로 하여 다른 String을 만들고 둘이 같은지 확인하면 된다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.InputStreamReader;public class N1259 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String Num = br.readLine(); int..

백준/Bronze 2025.07.10

[디지털 신호 처리] [챕터 1] 디지털 신호 처리, 정현파, 각속도, 위상

1.3 디지털 신호 처리1.3.1 디지털 신호 처리 시스템의 구성일반적으로 디지털 신호 처리는 다음과 같은 과정으로 이루어진다.아날로그 신호 s(t)가 디지털 디바이스에 입력된다. 전처리 필터: 아날로그 신호 s(t)의 주파수 범위를 제한하여 주파수 중첩 현상을 제거한다. 전처리된 x(t)가 출력됨A/D (Analog-to-Digital) 변환기: 아날로그 신호 x(t)를 디지털 신호 x[n]으로 변환한다. 이때, 샘플링과 양자화를 수행한다.디지털 시스템: 목적에 맞게 신호를 처리한다. y[n]이 출력된다.D/A (Digital-to-Analog) 변환기: 디지털 신호 y[n]을 아날로그 신호 y(t)로 변환한다.후처리 필터: 과도 응답을 제거하고, 파형을 매끄럽게 한다. z(t)가 출력된다. 1.3.2..

[브론즈 1] [Java] 백준 2609번: 최대공약수와 최소공배수

아이디어최대공약수를 구하는 방법은 유클리드 호제법을 이용하면 된다. 원리는 아래와 같다.a와 b를 나눈 나머지를 r이라 한다.b를 r과 나눈 나머지를 r'이라 한다.r과 r'을 나눈 나머지를 r''...을 반복해서 나머지가 0이 나올 때까지 이를 반복한다.나머지가 0이 될 때, 나누는 수가 최대 공약수이다.이를 24와 18의 예시로 하면 다음과 같이 진행된다.a = 24, b = 18이다. a % b = 6이다.b를 6으로 나눈 나머지는 0이다.최대공약수는 6이다.최소공배수를 구하는 방법은 간단하다.두 수를 최대공약수로 나누면 나오는 두 몫과 최대공약수를 곱하면 된다. 이를 코드로 구현하면 다음과 같다.import java.io.BufferedReader;import java.io.IOException;..

백준/Bronze 2025.07.09