전체 글 682

[JAVA] 백준 1193번 분수찾기 : 부등식과 반복문 2

1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 1. 문제 추상화 수열문제는 규칙을 찾는 문제이다. 배열의 인덱스가 지그재그로 부여된다. layer 인덱스 1층 1 2층 2 3 ( 하향 ) 3층 4 5 6 ( 상향 ) 4층 7 8 9 10 ( 하향 ) 5층 11 12 13 14 15 ( 상향 ) 이때, 입력된 인덱스가 가리키는 분수를 구하시오. 2. 알고리즘 1. 일정한 규칙에 따라 상향과 하향이 반복된다. 2. 입력값이 어느 범위에 포함되는지 알아야 한다. 3. 범위는 부등식이다. 4. 부등식 계산은 반복문을 사용한다. 5. 범위를 파악하면, 범위의 최대 인덱스가 가리키는 분수를 구한다. 6. 범위의 최대 인덱스와 입력된 인덱스 사이의 차..

문제풀이 2021.07.15

[JAVA] 백준 2292번 벌집 : 부등식과 반복문 1

2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 1. 문제 추상화 벌집은 정육각형을 동일한 정육각형으로 한 층씩 둘러 쌓아서 만든다. 한 층에 속한 정육각형들은 중심에서 떨어진 거리가 모두 동일하다. 그러므로 입력받은 번호의 정육각형이 몇 번째 층에 속하는지 구하라. 2. 알고리즘 층(n) 최솟값 최댓값 1층 x 1 2층 2 7 3층 8 19 4층 20 37 5층 38 61 . . . . . . 1. 각 층(n)의 최대값의 수열의 공차는 6의 등비수열을 이룬다. 1 7(1+6) 19(7+6*2) 31(19+6*3) ...

문제풀이 2021.07.15

[JAVA] 백준 1316번 그룹단어 체커 : 중복값

1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 1. 문제 추상화 1차 추상화 그룹단어란 연속된 문자로 이루어진 단어를 의미한다. 만약 연속되었던 문자가 한번 더 연속되면 그룹단어가 아니다. 2차 추상화 입력받은 영단어에서 문자가 중복되어 연속되지 않은 그룹단어의 개수를 구하시오. 2. 알고리즘 이 문제는 간단히 말해서 중복체크 문제이다. 첫 번째 방법 HashSet 이용하기 1. 입력받은 문자열을 한 문자씩 체크한다. (for문) 2. 문자가 변하는 횟수를 센다. (count..

문제풀이 2021.07.13

[JAVA] 백준 5622번 크로아티아 알파벳 : 문자열 탐색

2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 1. 문제 추상화 입력받은 문자열에서 크로아티아 문자가 사용된 횟수를 구하시오. 2. 알고리즘 첫 번째 방법 String API 이용하기 ( replaceAll 메소드 ) 두 번째 방법 if- else if 문으로 탐색하기 3. 풀이 첫 번째 방법 import java.util.Scanner; public class Main { public static void main(String[] args) { String[] croa..

문제풀이 2021.07.13

[ JAVA ] InputStreamReader : 인코딩

[ JAVA ] 기반 스트림, 보조 스트림 [ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언 lordofkangs.tistory.com 지난 포스팅에서 바이트 스트림의 기반스트림과 보조스트림의 개념을 알아보았다. 개인적으로 문자스트림에서 가장 중요한 클래스는 InputStreamReader 클래스라 생각한다. Reader 추상클래스는 유니코드 문자를 읽기 위해 존재한다. 그러나 인코딩에는 다양한 방식이 존재한다. 인코딩의 종류마다 문자를 표현하는 바이트 수도 다르다. UTF-8 인코딩은 한글을 3byte로 표현하고 ..

Dev/JAVA 2021.07.12

[ JAVA ] 기반 스트림, 보조 스트림

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1 lordofkangs.tistory.com 지난 포스팅에서 스트림(Stream)에 대해서 알아보았다. 간단히 정리하면 데이터는 스트림의 형태로 전송된다. 스트림(Stream)이란, 바이트의 흐름을 의미한다. 프로그램은 외부의 데이터를 스트림의 형태로 입출력한다. 이때, 1byte는 아스키코드 문자와 이미지, 영상 데이터의 기본 단위가 된다. 그러므로 1byte 단위로 스트림을 읽을 필요가 있는데, 이때..

Dev/JAVA 2021.07.12

[JAVA] 백준 5622번 다이얼 : Switch문

5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 1. 문제 추상화 입력된 문자열의 각 문자와 대응되는 정수와 대응하는 시간의 총합을 구하시오 2. 알고리즘 첫 번째 방법 Swtich 문 사용하기 두 번째 방법 아스키코드를 활용하여 if-elseif문 구현하기 3. 풀이 첫번째 방법 ( Switch문 ) import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String data = sc.next(); int timeForCall ..

문제풀이 2021.07.12

[JAVA] 백준 2908번 상수 : 문자열 역순 출력

2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 1. 문제 추상화 입력된 두 개 정수를 역순으로 변환 후 크기가 큰 정수를 출력하라. 2. 알고리즘 첫 번째 방법 정수 % 10 연산을 사용하여, 1의 자리 수부터 역순으로 String 변수에 붙이기 두 번째 방법 API 이용하기 (StringBuilder 클래스) 3. 풀이 첫 번째 방법 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io..

문제풀이 2021.07.12

[JAVA] 백준 1157번 단어 공부 : 이해하기 쉬운 코드란?

1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 1. 문제 추상화 입력된 문장에서 가장 많이 사용된 알파벳을 출력하시오. 2. 제약조건 대문자와 소문자는 같은 문자 취급한다. 3. 알고리즘 아스키코드 문자표 활용 1. 알파벳 배열 생성 2. 각 인덱스는 알파벳의 아스키코드표 십진수와 대응 3. 소문자 십진수가 대문자 십진수보다 +32 큼. 4. 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-..

문제풀이 2021.07.11

[JAVA] 백준 10809번 알파벳 찾기 : 아스키코드

10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 1. 문제 추상화 소문자 a부터 소문자 z까지 알파벳 중 입력된 문자열에 사용된 알파벳은 인덱스 사용되지 않은 인덱스는 -1 출력 2. 알고리즘 String의 indexOf() 메소드를 활용하여 인덱스를 탐색한다. 3. 풀이 내 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in);..

문제풀이 2021.07.11