본문 바로가기

전체 글

(197)
HashSet HashSet Set 인터페이스를 구현한 가장 대표적인 컬렉션 중복 X 순서 X -> 이러한 특징으로 컬렉션 내의 중복 요소들을 제거할 때 주로 사용 cf) 중복을 제거하는 동시에 저장한 순서를 유지하고 싶으면 LinkedHashSet 사용 boolean add() 새로운 객체를 저장 -> 성공하면 true, 실패하면 false import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Ex11_9 { public static void main(String[] args) { Object[] objArr = { "1", new Integer(1), "2", "2", "3", "3", "4", "4", "4" ..
[백준 10809 Java] indexOf() String 클래스의 indexOf()는 입력받은 문자의 위치를 반환해주는 메서드이다. 결과값이 없다면 -1을 반환한다. String str = "abcde"; str.indexOf('a') = 0; str.indexOf('c') = 2; str.indexOf('z') = -1; // 없는 문자는 -1을 반환 아래 문제는 이 특징을 사용하여 풀이하였다. import java.util.Scanner; public class Ex03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); for(char ch = 'a'; ch str.indexOf(a) -> dabin에서 a의 ..
[백준 4344 Java] 변수 선언 / 초기화 위치에 따른 변화 + 소수점 n째 자리까지 출력하기 변수의 초기화 위치에 따라 다른 값이 나와 헷갈렸던 문제. 단순한 문제인데 그동안 변수 선언과 초기화에 대해 아무 생각 없이 코딩했던 것 같아 정리하고자 한다. 일단, 아래 예제는 정답이다. 일부 변수(c, score)는 전역 변수로 선언과 초기화를 한 번에 한 반면, 일부 변수(n, total, count, avg)는 전역 변수로 선언만 하고 초기화는 for문 안에서 한 것을 볼 수 있다. for문 안에서 초기화를 한 이유는, 큰 for문을 한 바퀴 돌면 하나의 테스트 케이스가 실행된 것이기 때문에 다시 돌 때는 새로운 값들로 초기화가 되어야 하기 때문에 for문 바로 아래에 초기화가 된 것을 확인할 수 있다. 더 좋은 방법은 for문 안에서만 사용하는 변수는 for문 안에서 선언하고 초기화하는 것! ..
[백준 2577 Java] String / char / int 형변환 String -> char -> int 형변환 1. String -> char : charAt() 2. char -> int : charAt() - '0' // String -> char 타입 String str = 12345; str.charAt(0); // 1 (char 타입) str.charAt(1); // 2 (char 타입) // char -> int 타입 str.charAt(0) - '0'; // 1 (int 타입) str.charAt(1) - '0'; // 2 (int 타입) char -> String 타입으로의 변환 String.valueOf(char) char ch = 'A'; char[] charArr = new char[] {'a', 'b', 'c'}; String str1 = Str..
Arrays 클래스 Arrays 클래스에는 배열을 다루는데 유용한 메서드가 정의되어 있다. toString() 배열의 모든 요소를 문자열로 출력. 일차원 배열에 사용. deepToString() 배열의 모든 요소를 문자열로 출력. 다차원 배열에 사용. int[] arr = { 1,2,3,4,5 }; int[][] arr2D = {{11,22}, {21,22}}; System.out.println(Arrays.toString(arr)); System.out.println(Arrays.deepToString(arr2D)); fill() 배열의 모든 요소를 지정된 값으로 채움. int[] arr = new int[5]; Arrays.fill(arr, 9); // arr = [9,9,9,9,9] sort() 배열을 오름차순으로 정..
[백준 10951 Java] While문 EOF EOF ( End Of File ) 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음 즉, 테스트 케이스의 개수가 주어지지 않음 = 파일 종료 조건이 없음 import java.util.Scanner; public class Ex2 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNextInt()) { // int가 아닌 값을 입력하면 프로그램이 종료됨 int num1 = scan.nextInt(); int num2 = scan.nextInt(); System.out.println(num1 + num2); } } } while(true)를 입력하면 멈출 수 있는 조건도 없으니 ..
Git이란? + 기초 용어 정리 Git이란? 형상 관리 도구 = 버전 관리 시스템 중앙 서버에 소스 코드와 히스토리를 저장하는 SVN과 달리, 소스코드를 여러 개발 PC와 저장소에 분산해서 저장하는 분산형 관리 시스템 버전 관리 시스템의 종류 CVS : 과거 SVN : 과거 ~ 현재 GIT : 현재 Git의 장점 - 소스코드를 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발이 가능 - 브랜치를 통해 개발한 뒤, 본 프로그램에 합치는 방식 (Merge) 관련 용어 Repository : 저장소, 작업자가 변경한 모든 히스토리 확인 가능 - 원격 저장소 (Remote Repository) : 파일이 원격 저장소 전용 서버에서 관리되며, 여러 사람이 함께 공유하기 위한 저장소 - 로컬 저장소 (Local Reposi..
BufferedReader / BufferedWriter / StringTokenizer BufferedReader / BufferedWriter는 버퍼를 이용해서 입출력의 효율을 높여준다. 버퍼(buffer)란? 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역 버퍼링(buffering)은 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. "버퍼링이 왜 이렇게 느려~" = "저기에서 여기까지 데이터 전송이 왜 이렇게 느려~" BufferedReader BufferedReader는 Enter, Spacebar 모두 경계로 인식하는 Scanner와 달리, Enter만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업이 필요할 경우가 많다. 그럼에도 불구하고 많은 양의 데이터를 입력받을 경우 Buff..