프로그래머스 - 자연수 뒤집어 배열로 만들기 (Level 1)
2023. 12. 25. 01:50ㆍ코딩테스트 정리(자바)
728x90
1. List를 배열로 변환하는 방법
: for(int i=0;i<answer.length;i++){
answer[i]=result.get(i).intValue();
}
-> result.toArray()를 사용하면 Object 타입의 배열로 반환되기 때문에
int 타입의 배열에 대입할 수 없다
anwer=result.toArray(); (x)
public class 자연수_뒤집어_배열로_만들기 { //처음 푼 풀이 - 수식으로 접근
public int[] solution(long n) {
List<Long> result=new ArrayList<>(); //long 타입의 동적 배열 생성
while(n!=0){
result.add(n%10); //10으로 나눈 나머지= 즉, 1의 자리를 담기
n/=10; //n을 10으로 나눠서 1의 자리 없애기
}
int[] answer=new int[result.size()];
for(int i=0;i<answer.length;i++){
answer[i]=result.get(i).intValue(); //리스트를 배열로 하나씩 담기
// long 타입을 int 타입으로 변환해서 담아야 하므로 intValue() 메소드 사용
}
return answer;
}
}
2. 문자열로 푸는 풀이
public class 자연수_뒤집어_배열로_만들기 {
public int[] solution(long n) {
String str = Long.toString(n); //1, 문자열로 변환
//2. StringBuilder를 사용해 문자열 뒤집기
String reversed = new StringBuilder(str).reverse().toString();
char[] arr = reversed.toCharArray(); //3. 문자열을 문자배열로 변환
int[] result = new int[arr.length]; //4. 정수형 배열 생성
for (int i = 0; i < result.length; i++) { 5. 문자배열을 정수형 배열에 하나씩 담기
result[i] = arr[i] - '0'; //문자를 정수로 바꾸는 방법
}
return result;
}
}
* 문자열 정리
1. 문자열 내 문자를 가져오는 방법
:
- String.charAt(int index)
- 장점: 문자 하나를 쉽게 가져올 수 있다
- 단점: 메서드 호출에 따른 오버헤드가 있다
- 주로 특정 몇 개의 문자만 필요할 때 사용한다
- String.toCharArray()
- 장점: 모든 문자를 한 번에 가져올 수 있다
- 단점: 문자열 길이에 해당하는 메모리를 필요로 한다
- 주로 문자열의 모든 문자가 필요할 때 사용한다
2. 문자를 정수로 바꾸는 방법
: 예를 들어 9에 해당하는 문자를 정수값으로 바꾸고 싶다면
-> '0'을 빼주면 된다.
char digit ='9';
int digitToint=digit-'0';
3. 영문 소문자를 대문자로 바꾸는 방법
: 아스키코드에서 대문자는 65~90의 값을 가지고
소문자는 97~122의 값을 가진다.
- 값을 외울 필요는 없고 대문자가 값이 더 작다는 걸 기억하자.
- 소문자와 대문자 사이에는 'a' - 'A' 만큼의 차이가 난다.
- 문자끼리 연산을 하면 int형으로 자동 형변환이 일어나므로
char로 강제 형변환을 시켜야 한다.
char lower='e';
char upper= (char) (lower - ('a'-'A'));
대문자를 소문자로 바꾸기
char upper='E';
char lower= (char) (upper + ('a'-'A'));
내장 라이브러리를 사용해서도 쉽게 할 수 있다.
char lower='e';
char upper= Character.toUpperCase(lower);
char upper='e';
char lower= Character.tolowerCase(upper);
4. 문자를 이어붙이거나 빼는 등 문자열 수정하고 싶을 때
: StringBuilder를 사용한다
자주 사용하는 메서드
- StringBuilder.toString() : 지금까지 구성한 문자열을 String 형식으로 반환
- StringBuilder.append(char c) : 문자 c를 문자열 끝에 이어붙인다.
- StringBuilder.length() : 문자열 길이 반환
- StringBuilder.reverse() : 문자열을 뒤집는다.
StringBuilder sb=new StringBuilder(); // StringBuilder 생성하기
// 'a'부터 'z'까지 이어붙이는 예제
for(char c='a'; c<'z'; c++){
sb.append(c);
}
String str=sb.toString(); // String 타입으로 반환728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 시저 암호 (Level 1) (0) | 2023.12.28 |
|---|---|
| 프로그래머스 - 거리두기 확인하기(Level 2) (2) | 2023.12.28 |
| 프로그래머스 - 행렬의 곱셈 (Level 2) (3) | 2023.12.23 |
| 프로그래머스 - 삼각 달팽이 (Level 2) (2) | 2023.12.22 |
| 코딩테스트 문제풀이방법 (3) | 2023.12.21 |