728x90
반응형
전날 9시 정도에 일찍 잠들었기 때문에 일찍 일어나게 되어 알고리즘 강의를 들었다 ! 오늘도 두강의 정도 들었는데, 풀컨디션으로는 2강의정도가 맥스인 것 같다... 집즁력 한계,,
오늘 배운 것
1. nextInt()
int를 받을 수 있다. 사용법은 아래와 같다.
Scanner kb = new Scanner(System.in);
int i = kb.nextInt();
2. String vs StringBuilder
String은 불변객체이기 때문에 문자열을 새로 할당받을 때마다 새로운 객체를 생성한다는 특징이 있다.
StringBuilder는 가변객체이기 때문에 문자열을 더했다 뺏다하는 연산이 필요할 때 사용한다.
// StringBuilder 사용하기
String str = "test";
String test = new StringBuilder(str);
3. StringBuilder는 reverse() 메서드를 지원한다. 문자열 뒤집기 가능 !
String test = new StringBuilder("123");
String test2 = test.reverse().toString();
System.out.println(test2); // 321
4. while (lt < rt)
항상 분할정복을 공부할 때마다 헷갈렸던 내용. 기초부터 차근차근히 쌓아간다는 느낌으로 다시 보니까 아 ! 이거구만 ! 하면서 공부했다.
// 풀이 핵심 코드
int lt=0,rt=str.length()-1;
while(lt < rt){
char tmp = chars[lt];
chars[lt] = chars[rt];
chars[rt] = tmp;
lt++;
rt--;
}
5. 문제 풀이
이번엔 문제풀이를 두가지로 풀이했다. 둘다 기록해두면 좋은 풀이라고 생각한다.
import java.util.Scanner;
public class Main {
public static String solution(String str) {
String answer = "";
int lt=0,rt=str.length()-1;
char[] chars = str.toCharArray();
while (lt < rt){
char tmp = chars[lt];
chars[lt] = chars[rt];
chars[rt] = tmp;
lt++;
rt--;
}
answer = String.valueOf(chars);
return answer;
}
public static String solution2(String str){
return new StringBuilder(str).reverse().toString();
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int i = kb.nextInt();
for (int j = 0; j < i; j++) {
String str = kb.next();
System.out.println(solution(str));
//System.out.println(solution2(str));
}
}
}
728x90
반응형
'알고리즘 > 문자열, 정렬' 카테고리의 다른 글
[알고리즘] 중복문자 제거 with Java, indexOf(s.charAt(c)) (0) | 2022.02.25 |
---|---|
[알고리즘] 특정 문자 뒤집기 with Java, isAlphabetic() (0) | 2022.02.25 |
[알고리즘] 문장 속 단어 with Java, nextLine(), indexOf(),subString() (0) | 2022.02.24 |
[알고리즘] 대소문자 변환 with Java, isUpperCase(), ASCII (0) | 2022.02.23 |
[알고리즘] 문자 찾기 with Java, Scanner, charAt, toUpperCase(), toCharArray() (0) | 2022.02.22 |