전체 글

개발 공부 블로그
Solution/백준

[백준/Java] 1152번: 단어의 개수

[백준] 1152번: 단어의 개수 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 풀이 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Buffe..

Solution/백준

[백준/Java] 1157번: 단어 공부

[백준] 1157번: 단어 공부 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 풀이 처음 풀었던 풀이이다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)..

Solution/백준

[백준] 2675번: 문자열 반복

[백준] 2675번: 문자열 반복 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOE..

Solution/백준

[백준] 4673번: 셀프 넘버

[백준] 4673번: 셀프 넘버 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net Java 풀이 import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOException { BufferedWriter bw = new Buffered..

Programing Language/Java

[Java] StringTokenizer, NoSuchElementException 예제

StringTokenizer 문자열이 특정 구분자(delimiter)로 연결되어 있는 경우, 구분자를 기준으로 부분 문자열을 분리하기 위해 이용하는 클래스이다. String.split() 메서드를 사용하여 문자열을 구분할 수도 있다. 일반적으로 코딩할 때 split() 메서드를 사용할 때의 속도와 StringTokenizer를 사용할 때의 속도가 그렇게까지 유의미한 차이가 나진 않지만, 시간제한이 있는 알고리즘 문제를 푸는 등의 경우는 속도가 비교적 빠른 StringTokenizer를 사용하는 게 좋다고 생각한다. split() 메서드는 정규 표현식을 사용해 구분하고, StringTokenizer는 문자를 사용해 구분한다는 점에서도 차이가 존재한다. StringTokenizer 사용법은 다음과 같다. i..

Solution/백준

[백준] 2577번: 숫자의 개수

[백준] 2577번: 숫자의 개수 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..

Solution/백준

[백준] 1110번: 더하기 사이클

[백준] 1110번: 더하기 사이클 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws..

Web/Spring

[Spring Boot] pdf 파일 다운로드 및 현재 탭에서 열기

pdf 파일 다운로드 및 현재 탭에서 열기 스프링에서 파일 다운로드 구현은 어렵지 않다. 다운로드 파일 유형이 pdf인 경우, 다운로드하지 않고 현재 탭에 미리보기로 띄워야 하는 경우도 있는데, 이도 어렵지 않다. 파일 다운로드 간단하게 ResourceLoader를 사용하여 파일 다운로드하는 방법을 알아본다. html 부분이다. 파일 다운로드 태그를 작성하고, 해당 태그 클릭 시 파일 다운로드를 진행하게 한다. myFile.pdf 부분은 파일명을 집어넣는다. 데이터 정보로 파일명을 불러올 수도 있지만 현재 예제에서는 정말 단순하게 파일 다운로드만 살펴볼 것이기 때문에 파일명을 myFile.pdf로 지정해주었다. 다음은 Controller 부분이다. 기존 Controller를 사용해도 되긴 하지만 파일 기..

Programing Language/Java

[Java] 어노테이션 (Annotation)

어노테이션(Annotation) 어노테이션은 애플리케이션이 처리해야 할 데이터가 아닌, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다. 어노테이션은 클래스, 인터페이스, 어노테이션, 필드, 생성자, 메서드 등 여러 곳에 적용될 수 있다. 어노테이션은 대게 아래 세 가지 용도로 사용된다. 코드 문법 에러 체크 어노테이션은 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공한다. 예로 @Override 어노테이션이 메서드 앞에 명시된 경우, 이는 해당 메서드가 오버라이드 된 메서드임을 컴파일러에게 알려주는 것이다. 컴파일러는 @Override 어노테이션을 보고 그 메서드가 오버라이드 된 것인지 확인한다. 그리고 오버라이드 된 메서드가 아닌 경우 컴파일 에러를 발생시..

Solution/백준

[백준] 10869번: 사칙연산

[백준] 10869번: 사칙연산 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net Java 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a ..

Solution/백준

[백준] 1000번: A+B

[백준] 1000번: A+B 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 시간을 죽이기 위해 입출력부터 손을 댄다. 8시간은 너무나 긴 시간,, Java 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.println(A + B); } Scanner를 사용하여 풀었지만 수행 시간이 200ms이었다. 다른 사람들 제출 시간을 보니 java 8 기준 68ms..

Programing Language/Java

[Java] 정적 초기화 블록

정적 초기화 블록 정적 멤버는 클래스에 고정된 멤버로, 객체를 생성하지 않고 사용할 수 있다. 정적 필드는 보통 필드 선언과 동시에 초기 값을 주지만, 계산이 필요한 초기화 작업인 경우 static 블록을 생성하여 해당 블록 내에서 초기화해주기도 한다. 정적 블록은 클래스가 메모리로 로딩될 때 자동적으로 실행되며, 여러 개의 정적 블록이 선언되어 있는 경우 선언된 순서대로 실행된다. 정적 메서드와 정적 블록은 객체가 없어도 실행되기 때문에 해당 {} 내에 인스턴스 필드나 인스턴스 메서드를 사용할 수 없다. 그리고 this 키워드도 사용이 불가능하다. 따라서 정적 메서드와 정적 블록에서 인스턴스 멤버를 사용하기 위해서는 객체를 먼저 생성한 뒤 참조 변수로 접근해야 한다. public class MyClas..

밈아
Mimah