220930 자바 9강 String 클래스와 문자열
<오늘 수업 내용>
-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
이런 풀이 말고도 프로그래머스에서 문제를 풀고나면 다른 사람들의 다른 풀이법을 볼 수 있으니 다른 방법도 참고해보도록 하자.