목록2024/07 (9)
Just Do IT!
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/buaegd/btsILEZ3KpM/psHBN1R4o4ztxMPiUl0BTk/img.png)
강의에서 과제가 주어져서 과제를 구현하다가, TreeSet 관련해서 오류가 생겨서 해결한 기록을 작성하려 한다.비록 chatGPT와 여러 블로그들을 참고했지만, 그래도 무엇이 원인이고 해결 방법이 무엇인지 알게 되었으니까. 우선, 간단하게 과제는Book 클래스 / BookManager 클래스 / BookCompartor / BookExample로 구성되어 있다. BookManager 안에는 다양한 메소드들이 있는데, 그 중 TreeMap을 생성하여 Books의 book들을 모두 트리맵 형식으로 반환해야 하는 과제가 있었다. 전체 코드를 작성하자면,package com.assignment;import java.util.ArrayList;import java.util.Comparator;import jav..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bDvbvr/btsIHyHpL2h/12paEKIljOtVNDqEvZr3e1/img.png)
내가 푼 코드.사실 머리가 안돌아가서(?)입력받는 부분과 알파벳 배열을 넣고 for문 돌리는 것까지 하고 다른 분들의 코드를 참고했다. import java.io.BufferedReader;import java.io.InputStreamReader;public class BOJ_1316 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int count = 0; for (int i = 0; i 연속된 문자이므로 그냥 계속 반복문을 진행 ..
StringBuilder란?String은 불변(immutable) 객체라고 한다. 즉, 한 번 생성되면 변경할 수 없는 것이다.+ 연산자를 사용하여 연결할 수는 있지만, 이는 새로운 문자열 객체가 생성된다는 것을 의미한다.따라서 만약 String 객체를 더하거나 뒤집는 경우, 메모리 할당과 메모리 해제를 발생시키며 연산이 많아지만 성능이 좋지 않다. 그럴 때 사용하는 것이 바로 StringBuilder이다.StringBuilder는 String과 다르게 mutable 하다. 즉, 값이 변할 수 있다.새로운 객체를 생성하고 메모리를 할당하는 것이 아니라 기존의 데이터에서 변경되기 때문에 상대적으로 속도가 빠르고 부하가 적다. 따라서 긴 문자열을 사용하는 상황인 경우, StringBuilder 또는 Stri..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bZj1Ln/btsIFpvGzvr/xwKO3cj0UsycBflIJTkZYK/img.png)
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); sc.close(); A = Integer.parseInt(new StringBuilder().append(A).reverse().toString()); B = Integer.parseInt(new StringBuilder().append(B).reverse().toString()); System.out.println(A > B ? A : B); }} StringBuilder를 사용하여 문자열 뒤집..
백준 1152번 문제를 풀다가 잘 모르겠어서 검색을 해보니,java에 StringTokenizer 라는 것이 있었다.StringTokenizer는 공백을 기준으로 나뉘어 토큰에 저장하기 때문에 이를 이용하는 것이었다.그러다가 이것과 split()이 뭐가 다른지 궁금해져서 내가 알아보려고 블로그글을 작성한다. java.util.StringTokenizer 클래스긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용한다.StringTokenizer의 구분자로 단 하나의 문자 밖에 사용하지 못하기 때문에, 보다 복잡한 형태의 구분자로 문자열을 나누어야 할 때는 어쩔 수 없이 정규식을 사용하는 메서드를 사용해야 한다StringTokenizer의 생성자와 메서드생성자Stri..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/baxrLo/btsIFa6CALN/i5olJFapXv305k0t4BF13K/img.png)
import java.util.Scanner;import java.util.StringTokenizer;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String sentence = sc.nextLine(); // 문자열 sc.close(); StringTokenizer word = new StringTokenizer(sentence, " "); System.out.println(word.countTokens()); }} StringTokenizer를 사용한다.공백을 기준으로 나뉘어 토큰에 저장하기 때문에 입력한 문자열의 처음이나 마지막에 공백이 있어도 동일한 결과를 ..
Java에서 값을 입력받을 수 있는 방법이 두 가지가 있다.Scanner와 BufferedReader인데, 백준에서 문제를 풀다가 빠른 A+B라는 문제에서 BufferedReader를 쓰라고 해서겸사겸사 정리도 할 겸 블로그에 적어본다. Scannerjava.util 패키지 내에 포함된 클래스Scanner의 특징토큰 단위로 입력값의 경계로 인식하여 데이터를 좀 더 쉽게 입력받을 수 있다.토큰(token) : 공백 문자로 구분되는 요소String 값을 입력할 때는 next()와 nextLine()에 따라 입력값의 경계가 달라질 수 있다.각 토큰들은 Scanner 메서드에 하나씩 순서대로 입력된다.데이터 타입이 입력 받는 시점에서 결정되므로 별도의 형변환이 필요하지 않다.원하는 타입으로 읽을 수 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c8lOc6/btsIs5DIoew/NSCXgSZsvzvw1dDFjoIQZ0/img.png)
간단해보이지만, 생각해볼 것들이 은근 있다.문제를 푼 다음에 찾아보니까 세 가지 방법으로 풀 수 있다고 해서 정리해보려고 한다. 내가 푼 방법 (나머지 및 나눗셈 연산을 통해 각 자릿수를 구하여 출력하는 방법) import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); sc.close(); System.out.println(A * (B % 10)); System.out.println(A * (B % 100 / 10)); System.out.print..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b5P1eN/btsIsAwWNB2/8M7JRb809BD7KlvNClyJ8k/img.png)
자바 실습을 하던 중에, warning이 떴다. 이런 warning이었는데 해결하지 안하도 잘 돌아가긴 하지만,뭔가 찝찝해서 구글링해서 찾아보고 해결했다. new Scanner 를 System.in을 해주었기 때문에 반드시close 를 해주어야한다는 뜻이다. int sum = 0; double avg = 0; // 세 명의 수학 점수 입력 Scanner sc = new Scanner(System.in); 이렇게 Scanner를 사용했지만 close를 하지 않아서 생긴 문제였다. scanner를 다 사용한 뒤에 추가하면 warning이 일어나지 않는다. package com.practice09;import java.util.Scanner;public class InputExample { pub..