자바 373

[Java] 백준 풀기 1158 - 요세푸스 문제

자바 백준 1158번 실버 5 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 보기 분류: 자료 구조, 큐 문제 풀기 입력 받을 Queue 인 numQue 와 요세푸스 수를 저장할 numJosephus 를 준비한다. offer() 을 통해 1 부터 순차적으로 수를 Queue 에 입력 받는다. 모든 수가 저장된 numQue 에서 제일 처음에 들어온 수를 poll() 로 빼내어 맨 뒤에 다시 offer() 로 넣는 과정을 주어진 k - 1 횟수만큼 반복을 한다. 이 과정의 for loop 이 완료될 때마다 그 다음 수를 빼내어 num..

공부하기/백준 2023.01.17

[Java] 백준 풀기 17478 - 재귀함수가 뭔가요?

자바 백준 17478번 실버 5 https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 문제 보기 분류: 구현, 재귀 문제 풀기 base case 및 recursive case 조건을 인지하여 구현한다. base case 는 재귀함수가 끝나는 지점이며, return 을 하여 이전에 지속적으로 누적된 함수들을 되짚어 돌아간다. 재귀함수와 관련없는 첫 줄 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. 를 시작으로.. recursive ca..

공부하기/백준 2023.01.16

[Java] 백준 풀기 2742 - 기찍 N

자바 백준 2742번 브론즈 4 https://www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 자바 연습. Scanner() 를 통해 입력을 받는다. 입력받은 n 만큼 for loop 을 돌리면서 1 씩 줄여가며 1 까지 출력을 한다. 코드 보기 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = n;..

공부하기/백준 2023.01.15

[Java] 백준 풀기 2744 - 대소문자 바꾸기

자바 백준 2744번 브론즈 5 https://www.acmicpc.net/problem/2744 2744번: 대소문자 바꾸기 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 자바를 연습하다. toCharArray() 로 주어진 문자들을 리스트에 char 타입으로 입력받는다. char 타입은 ASCII 코드의 10 진수인 정수로 저장이 되기 때문에 크기 비교를 통해 조건을 준다. (대문자 Z 90 보다 작거나, 소문자 a 97 보다 크거나) 대문자와 소문자는 ASCII 코드 10 진수에서 32 만큼 차이가 있기 때문에 이를 이용하여 연산을하여 대문자 -..

공부하기/백준 2023.01.13

[Java] 백준 풀기 2738 - 행렬 덧셈

자바 백준 2738번 브론즈 5 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 문제 보기 분류: 수학, 구현 문제 풀기 자바 연습을 위해 온라인 컴파일러로 하나하나 출력해 보며 풀어본다. Scanner 를 준비하여 nextInt() 로 n 과 m 을 입력받는다. 2차원 배열 a_array, b_array 그리고 result_array 를 생성하고 이중 for loop 을 통해 각각의 array 에 값을 저장한다. 두 array ..

공부하기/백준 2023.01.12

[Java] 공백 없는 연속된 숫자들 분리하여 배열에 입력받기 (split, toCharArray)

자바로 코딩 테스트 문제를 풀 때, 띄어쓰기로 공백이 형성된 여러 단일 숫자들의 데이터는 간단하게 배열로 작성이 가능하나, 공백 없이 한 번에 나열된 숫자들은 각각 띄워서 배열로 저장을 하려면 번거로운 작업이 필요하다. split() String[] strArr = sc.next().split(""); 첫째, 임시 배열 strArr 에 .split("") 으로 분할하여 입력받는다. numberArr[i][j] = Integer.parseInt(strArr[j]); 둘째, 입력받은 문자형 숫자를 하나씩 꺼내어 Integer.parseInt() 로 int 변환을 한다. 적용 코드 // using the split() package input_numbers; import java.util.Arrays; imp..

알아가기/Java 2023.01.12

[Java] ArrayList 모든 원소 출력하기

for-each & Arrays 반복 출력 실행을 통해 원소를 매번 출력하는 방법과 Arrays 를 통해 단번에 내부 원소를 확인하는 방법. for-each 를 이용한 출력. // for-each 를 이용한 출력. for (Object element : myList) { System.out.println(element); } Arrays 를 이용한 출력. // Arrays 를 이용한 출력. System.out.println(Arrays.deepToString(myList.toArray())); 실행 코드 import java.util.List; import java.util.ArrayList; import java.util.Arrays; public class MyClass { public static ..

알아가기/Java 2022.12.31

[Java] 파일 상대경로 설정 (Relative Path on Mac)

맥 환경에서 PrintWriter 을 이용하여 절대경로와 상대경로에 파일을 생성하고 그 경로의 차이를 예시로 확인한다. 절대경로 File f = new File("/Users/apple/java/01_test/newFile01.txt"); 기본적으로 맥에서 절대경로는 Users 에서 부터 시작된다. 윈도우로 보자면 C: 맥에서 절대경로로 파일에 접근하려면 "/Users/{account name}/files/01_test/newFile01.txt" 형식으로 작성해야 한다. 절대경로는 Finder 에서 Get info 등을 이용하여 나타나는 경로를 복사 붙여넣기 하면 간단히 해결된다. 이 절대경로를 이용하여 "newFile01.txt" 파일을 생성하였다. 프로젝트 위치 File f = new File("ne..

알아가기/Java 2022.12.27

[Java] 잘못된 입력에 대해 exception 으로 재입력 유도

while 그리고 exception 사용자의 입력을 받을 때 프로그램이 정상적으로 작동하기 위한 조건에 맞지 않는 입력이 들어오면 exception 을 사용하여 재 입력을 유도한다. 이를 위해 while 과 try 그리고 continue 를 이용할 수 있다. 예를 들어 사용해 보면, 입력은 숫자만 받아야 하는 조건이 있다. 숫자인지 문자인지 일단 입력받고 판별하기 위해 모든 입력을 문자로 입력받는다. 그리고 이를 숫자형으로 변환하는 과정에서 try 와 catch 를 사용하고 숫자가 맞다면 실행되고 있는 while loop 를 break 로 빠져나간다. 하지만, 입력 데이터에 문자가 섞여 있다면 catch exception 으로 분류되어 메시지가 출력되고 continue 를 만나게 되어 break 가 실행..

알아가기/Java 2022.12.26

[Java] array 값 정렬하기 w/o Arrays.sort()

조건이 만족하지 않을 때까지 swap array 안의 value 들이 서로 인접해 있는 value 와 서로 크기 비교를 한다. 이 과정은 for loop 으로 이루어지고 그 외부를 감싸는 while loop 를 멈추지 않게 한다. 만약 모든 정렬이 완료되어 더 이상 크기 비교 조건을 만족하지 않으면 그 회 while loop 는 false 값을 유지하여 종료가 된다. import java.util.Arrays; public class Main { public static void main(String[] args) { int[] array = {12, 56, 34, 89, 23, 67, 73}; int[] sorted = sortIntegers(array); System.out.println(Arrays..

알아가기/Java 2022.12.24