자바수업 기록

220930 자바 9강 String 클래스와 문자열

JadeStone 2022. 10. 1. 17:34

<오늘 수업 내용>

-StudentManager (배열 수정, 삽입,삭제, 무한루프 탈출에 관한 문제) 풀었음. -> 복습하기.

#String클래스. (자바교안 19강) 
-다 암기해야함.

- String은 생성자를 사용해서 객체를 만들 필요 없이 기초 데이터를 사용할 때처럼 바로 초기화해서 사용 할 수 있습니다.

- String 클래스의 주요 메서드

1. charAt(): 특정 인덱스의 글자를 리턴.
2. indexOf():
특정 문자열의 시작 인덱스 값을 반환합니다. 만약 주어진 문자열이 포함되어 있지 않으면 -1 을 리턴합니다.
3.
length(): 문자열의 길이를 알려줍니다.
4.
replace(): 특정 문자열을 변경합니다.
5.
substring(): 인덱스를 기준으로 그 앞의 문자열을 잘라줍니다. 만약 매개값으로 인덱스를 2개 주면 처음 매개값 이상 두 번째 매개값 미만의 문자열을 제외하고 나머지를 삭제합니다.
6. toUpperCase():
문자열을 대문자로 치환합니다.
7. toLowerCase():
문자열을 소문자로 치환합니다.
8. trim():
문자열의 앞, 뒤 공백을 제거합니다.
9. equals():
문자열의 값을 비교합니다.
10. valueOf():
기본 데이터 타입의 값들을 문자열로 변환합니다.
11.
split(): 특정 문자열 기준으로 잘라서 배열에 리턴.

 

위에 11번에서 더 나아가 문자열 자르기를 아래와 같이 더 잘 알아두자. 정말 중요!!!

 

#문자열 자르기. ★★★★★ 굉장히 중요!
-substring - 인덱스 기준으로 자름 , 인덱스 미만을 절삭해줌.
-split - 특정문자 기준으로 잘라서 배열로 담아줌 -> ★★★★★★★★★★ 엄청 많이 씀 ★★★★★★★★★★
-toCharArray - 문자열을 공백까지 다 하나하나 배열에 인덱스 순서대로 넣어줌.

-공부할 class 
StringManipulation, Quiz20 , 그리고 백준 문자열 문제들 풀어보기

<오늘 기억해둘 내용>

-중첩 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(label) 을 붙이고, "break 이름;"을 사용하면 됩니다.
사용예시) 이름:for(){break 이름;}
-우리가 스캐너로 입력을 받을 때 숫자 아니면 문자열로만 받을 수 있음.
-"A"(String형)를 숫자형으로 바꿀 수 없음. 
숫자형으로 바꾸기 위해서 "A"(String)를 우선 Char형으로 바꿔주어야함.

 

< 주말 동안 할 일.>

-백준 문자열 문제, 배열 문제, 반복문 문제, 조건문 문제 다 풀기.

시간이 모자르다면 되도록 최근 문제부터 순서대로 되는데로 풀기.

- 2주간의  블로그 기록들을 통해서 내용들 한번 이상 훑어보기.

 그리고 나서 세세하게 부족한 부분들 내용 반복 학습, 숙달 훈련하기.

 

<백준 , 프로그래머스 문제 풀이중 어려웠던 문제.>

https://school.programmers.co.kr/learn/courses/30/lessons/120906

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

https://www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

둘이 동일한 문제임.

class Solution {
    public int solution(int n) {
        int answer = 0;
        String a = ""+n;
        char[] num = a.toCharArray();
        for(int i = 0; i < num.length; i++) {
        	answer += (int)num[i] -48;
        }
        return answer;
    }
}

위에 프로그래머스 문제의 답. 
answer 은 사실 정수들의 합을 나타내고 있으니 sum이라고 생각했을 때.

각 배열이 현재 char형으로서 정수1이 아니라 1==아스키 코드의 값이다. 이를 아랫줄과 같이 처리해주면.

char 형 배열의 각각 인덱스 값의 숫자의 합이, 마치 정수형으로 더한것처럼 결과처리가 되는데 이 부분이 굉장히 낯설었음

잘 익혀두자.

sum+= (int)num[i] -48;

 

위에 백준 문제의 답안. 옆자리에 앉은 동료께서 하사해주심.
위에 문제를 풀 때 활용한 아스키코드 표

문자 0 은 아스키 코드표에서 10진수로 그 값을 48로 갖고있다.

'0' =48 , '1'=49 , '2' =50

즉 모든  char 형 숫자에서  char 형인 '0' 의 정수값48을 빼주면   int n 의 모양이 된다.

정리해서, 'n' - 48 -> int n 

이런 풀이 말고도 프로그래머스에서 문제를 풀고나면 다른 사람들의 다른 풀이법을 볼 수 있으니 다른 방법도 참고해보도록 하자.