JAVA 67

[백준] 2675번 문자열 반복

문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. (구상) 문자열 입력은..

JAVA/JAVA Algorithm 2022.09.05

[백준] 11720번 숫자의 합

문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. (구상) 입력: 버퍼리더를 통해서 입력을 받는다. 더해야하는 숫자 전체를 String으로 받은 이후 substring을 이용하여 하나하나 분리해 주었다. substring(int a, int b) : 인덱스 a이상 b 미만까지를 가져옴 이때 substring(i,i+1) 로 주어서 i번째에 있는 것만을 뽑아온다. 이를for문을 통해 반복하고 모두 더해주어야 함으로 add라는 int형 공간을 만들어서 for문 안에서 더해주었다. import java...

JAVA/JAVA Algorithm 2022.08.31

[백준] 2292번 벌집

문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다. (구상) 다음그림처럼 1에서부터 1칸씩 멀어질수록 규칙을 가진다. 2칸 떨어진 수들 2~7 (6개) 3칸 떨어진 수들 8~19 (12개)..

JAVA/JAVA Algorithm 2022.08.30

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

문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..

JAVA/JAVA Algorithm 2022.08.29

[백준] 2884번 알람시계

문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로..

JAVA/JAVA Algorithm 2022.08.28

Math Class

java.lang.Math 클래스 Math 클래스는 수학에서 자주 사용하는 상수들과 함수들을 미리 구현해 놓은 클래스로 Math 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용 가능하다. - Math.E : 오일러수 / 자연로그 e의미 - Math.PI : 원주율 -random( ) 0.0 이상 1.0 미만의 범위에서 임의의 double형 값을 하나 생성하여 반환한다. 정수형 난수 발생 공식 (int)(Math.random()*(상한가 - 하한가 +1)+하한가) (예) 5 이상 20 이하의 난수 발생 시키기 (int) (Math.ramdom()*(20-5+1)+5) Random ran = new Random(); System.out.println(..

JAVA/JAVA_Lang 2022.08.28

StringBuilder

자바에서 String은 변경 불가능하다. (불변의 객체) 하나의 문자열을 다른 문자열과 합치면 새 문자열이 생성되고 이전 문자열은 가비지 컬렉터로 들어간다. String과 String을 더하는 행위는 메모리 할당과 메모리 해제를 발생시키며 더하는 연산이 많아진다면 성능적으로 좋지 못하다. String은 변경 불가능 하지만 StringBuilder은 변경 가능한 문자열을 만들어 준다. Stiring을 합치는 작업시 하나의 대안으로 사용가능하다. StringBuilder 에서는append()를 이용하여 문자열을 더한다. [생성자] StringBuilder sb = new StringBuilder(); // 객체 선언 StringBuilder sb = new StringBuilder("abc") ; // 문자..

JAVA/JAVA_Lang 2022.08.28

[백준] 18258번 큐2

문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. ..

JAVA/JAVA Algorithm 2022.08.28

Stack 과 Queue

Stack Stack 클래스는 List 컬렉션 클래스의 Vector 클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다. 스택 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)의 시멘틱을 따르는 자료 구조이다. 즉, 가장 나중에 저장된(push) 데이터가 가장 먼저 인출(pop)되는 구조이다. (비커를 생각하면 편하다.) 스텍은 Vector 클래스의 메소드 5개를 상속받아 사용한다. Stack 자료형 메소드 설명 bool empty() 해당 스택이 비어있으면 true / 비지 않았으면 false 반환 E peek() 스택의 제일 상단(제일 마지막에 저장된) 요소 반환/ 비어있으면 오류 E pop() 스택의 제일 상단(제일 마지막에 저장된) 요소 반환 하고 해당 요소를..

JAVA/JAVA_Lang 2022.08.26

[백준] 10828번 스택

문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..

JAVA/JAVA Algorithm 2022.08.26