_

Always be tactful

전체 글 94

[IntelliJ] 인텔리제이 단축키 모음

본 게시물은 수시로 업데이트 됩니다.[마지막 수정: 25-04-13] Ctrl + 클릭Go to Definition 기능psvmpublic static void main(String[] args) {} soutSystem.out.println(); soutvSystem.out.println(변수 이름); soutmSystem.out.println(메서드 이름); iter향상된 for 문 생성 setsetter 생성 getgetter 생성Ctrl + P메서드 호출 시 파라미터 표시 Ctrl + O메서드 오버라이딩 Ctrl + R텍스트 대치 Ctrl + W선택 영역 확장 Ctrl + Alt + V변수 선언 자동 생성 Ctrl + Alt + N코드 정리 Ctrl + Alt + M메서드 추출 Ctrl + Alt..

[Java] BOJ 2750: 오름차순 정렬하기, 거품 정렬

백준 2750번은 배열을 오름차순으로 정렬하면 되는 문제이다. Arrays.sort() 메서드로 쉽게 풀 수 있는 문제지만, 공부 목적으로 해당 메서드를 사용하지 않고 풀어보도록 하겠다.내 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.r..

[Java] BOJ 2839: 반복문에 이름 붙이기, 레이블

반복문에 이름을 붙이다니, 왜?  ...라고 생각했다면 아래 코드를 보자. 다음은 백준 2839번 '설탕 배달'에 대한 나의 첫 번째 코드다.  문제 상황 속, 설탕 배달에 쓰일 봉투는 5kg짜리와 3kg짜리가 있다. 배달해야 할 설탕의 무게 N이 주어질 때, 설탕 봉투 수를 최소로 하는 경우를 찾아내 총 봉투 수를 출력해야 하는 문제이다.import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int temp = 0; for (int i = 0; i..

[Java] '예외 처리' 완전 정복하기

예외 처리  예외 처리란 프로그램 실행 중 발생할 수 있는 오류를 처리하는 기법이다. 즉, 예외가 발생하더라도 프로그램이 갑자기 종료되지 않고, 예외 처리 코드를 통해 문제를 해결할 수 있게 된다. (예외 처리를 하지 않는 경우, 예외가 발생한 지점에서 UncaughtException이 발생하여 프로그램이 비정상적으로 종료된다.)  여기서 예외 발생이라고 함은, 파일을 열고자 하는데 열 파일이 존재하지 않는다거나, 배열의 인덱스를 잘못 참조하는 등 예기치 않은 상황을 말한다. (아래 예시는 배열의 인덱스가 한도를 넘었을 때의 예외다.)int[] arr = new int[3];arr[10] = 10; // ArrayIndexOutOfBoundsException 발생예외 종류  자바에서 예외는 크게 Chec..

[Java] Scanner, BufferedReader

Scanner와 BufferedReader는 입력을 읽는 데 사용되는 클래스이다. 실제로 두 클래스 모두 내부적으로 버퍼링을 사용하여 데이터를 처리한다. 그러나 둘 사이에는 명확한 차이점이 존재하는데, 바로 입력 방식과 성능이다. 핵심은 이러한 차이점으로 인하여 각각의 사용 용도가 어느 정도 정해져 있다는 것인데, 본 포스팅에서는 두 클래스 간의 차이점을 비교 분석해보려고 한다.주요 특징 비교[Scanner]  Scanner는 다양한 자료형을 쉽게 처리하는 클래스이다. 이에 따라 다양한 메서드가 존재하는데, 예를 들어 nextLine()은 한 줄을 읽고, nextInt(), nextDouble()은 각각 정수와 실수 형식으로 입력을 받는다.  이렇듯 Scanner는 굉장히 좋아 보이지만 치명적인 단점이 ..

[Java] if 문, switch 문, 삼항 연산자

if 문String grade = "A";int bonus;if (grade == "A") { bonus = 1000000;} else if (grade == "B") { bonus = 800000;} else if (grade == "C") { bonus = 500000;} else { bonus = 0;} if 문은 가장 기본적인 제어문이다. 그렇기에 사실상 if 문만 쓰더라도 문제 될 것은 없다. 그러나 특정 상황에서는 if 문보다 가독성이 더 높은 switch 문을 선호한다.switch 문String grade = "A";int bonus;switch (grade) { case "A": bonus = 1000000; break; case "..

[Java] 객체의 실제 메모리 주소 얻기

안타깝게도 자바에서 객체의 실제 메모리 주소를 직접적으로 얻는 것은 불가능하다.  일단 자바는 가비지 컬렉션을 사용한다. 자바 가상 머신과 가비지 컬렉터가 메모리 관리와 객체 생명주기를 처리한다. 그렇기에 자바에서는 메모리 주소를 숨기고 객체에 대한 참조만을 제공한다. (애초에 설계부터 객체의 메모리 주소나 포인터를 프로그램에서 접근할 수 없도록 설계했다는 말이다.)참조 예시String str1 = new String("funczun");String str2 = str1; // str2가 str1을 참조 * str1, str2 모두 같은 객체를 참조하고 있지만, 메모리 주소에 직접 접근하지 않고 참조 변수를 통해 객체를 사용한다.가비지 컬렉션 (Garbage Collection)  가비지 컬렉션은 메모리..

[Java] ==, equals() /문자열 비교 정복하기

내가 파이썬만을 고집했다면 평생 들지 않았을 의문 중 하나이다. 왜 자바에서는 문자열을 비교할 때, equals() 메서드를 사용해야 하는가?자바에서 문자열 비교 시, == 또는!= 연산자를 쓴다면 어떻게 되는가? 이에 대해 명쾌하게 답할 수 없다면 본 게시물을 읽을 가치가 있다.String은 객체 타입인 '클래스'이다.String str1 = new String("funczun");String str2 = new String("funczun"); 우선 클래스답게 문자열 두 개를 생성해보았다.System.out.println(str1 == str2); // false 두 문자열을 == 연산자를 통해 비교하니 false가 출력되었다. 분명 str1, str2 모두 "funczun"으로 동일한데 false로..

[Java] 주요 연산자 알아보기

// 몫 반환int num1 = 5, num2 = 2;System.out.println(num1 / num2);// 변수 추가 선언int newNum = 0;// 전위 증감 연산자num1 = 0;newNum = ++num1;System.out.println("newNum = " + newNum + ", num1 = " + num1);// 후위 증감 연산자num1 = 0;newNum = num1++;System.out.println("newNum = " + newNum + ", num1 = " + num1);// 비교 연산자int a = 1;float b = 0.1f;double c = 0.1;System.out.println(a + b == 1.1);System.out.println(a + c == 1...

[Java] 기본 변수 한 장 정리

byte b = 127;// 1byte (2^8): -128 ~ 127short s = 32767;// 2byte (2^16): -32,768 ~ 32,767int i = 2147483647;// 4byte (2^32): -2,147,483,648 ~ 2,147,483,647long l = 9223372036854775807L;// 8byte (2^64): -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807float f = 3.14f;// 4byte (2^32): 대략 -3.4E38 ~ 3.4E38 (7자리 정밀도)double d = 3.14;// 8byte (2^64): 대략 -1.7E308 ~ 1.7E308 (15자리 정밀도)boolean bool = t..

[Java] 향상된 for 문

향상된 for 문은 주로 배열 또는 컬렉션 객체의 요소들을 쉽게 순회하기 위해 사용된다. Java 5에서 도입된 구문으로, 앞으로 쓰일 일이 많으니 잘 기억해 두자.향상된 for 문 기본 문법for (타입 변수 : 배열) { // 반복할 코드} 굳이 표현식을 적자면 이렇다만, 그냥 예시를 보는 편이 훨씬 낫다.전통적인 for 문과의 차이점String[] names = {"Alex", "Brian", "Chris"};// 전통적인 for 문for (int i = 0; i  위 코드는 우리가 흔히 알고 있는 전통적인 방식의 for 문이다. 변수 i를 통해 반복 횟수를 지정하고, 인덱싱을 통해 이름들을 출력하고 있다.String[] names = {"Alex", "Brian", "Chris"};// 향상..

[CS] 1.1 + 0.1 != 1.2인 이유

컴퓨터에서 실수는 어떻게 저장될까? 컴퓨터는 모든 정보를 2진수로 표현한다. 실수 역시 2진수로 표현해 RAM에 저장하게 되는데, 이 과정에서 실수 값 일부가 손실되어 정확한 값이 아닌 근삿값을 저장하게 된다.  예를 들어, 0.1을 2진수로 표현하면 0.00011001100110011...이라는 무한소수가 된다. 숫자 하나를 저장하는 bit는 통상적으로 32비트이므로 뒷부분이 잘려나가게 되고, 이로 인해 오차가 발생하여 실제로 저장되는 값은 0.10000000000000000555...가 되어 미세한 오차를 발생시킨다. ▶ 자료형 double을 활용하자. C언어라면 double 자료형을 활용해서 숫자 하나당 64비트를 배정하여 오차를 급격하게 줄일 수 있지만 메모리 용량이 2배가 필요하다는 단점이 있다..

개인 학습/CS 2024.12.14