a : 0, b: 1, c: 2 ,,, j: 9 로 나타내는 코드를 작성하기
class Solution {
public String solution(int age) {
List<Integer> arrayList = new ArrayList<>(); //제네릭 클래스 사용
while (age > 0) {
int number = age % 10;
arrayList.add(0, number); // add()에 첫번째 매개변수 0을 넣어줌으로써 역순으로 저장
// (ex. age = 51일 때 0을 기입하지 않으면 1,5순서로 저장되므로 원하는 값이 출력이 되지않음
age /= 10;
}
StringBuilder answer = new StringBuilder(); // StringBuilder 클래스
for (Integer num : arrayList) { // 향상된 for문 사용
answer.append((char) ('a' + num));
}
return answer.toString(); // toString을 안 붙여도 컴파일러가 자동으로 붙여줘서 같은 결과값 리턴
// ArrayList arrayList = new ArrayList<>();
// String answer = "";
//
// while (age > 0) {
// int number = age % 10;
// arrayList.add(0, number);
// age /= 10;
//
// }
// for (int i = 0; i < arrayList.size(); i++) {
// answer += (char) ((int) 'a' + (int) arrayList.get(i));
// }
// return answer;
}
}
(아래 주석 처리 한 부분이 내가 기존에 풀었던 방법)
다른 분들 푼 것을 보니 강의에서 들은 것들을 많이 사용하여 푸는 것을 알 수 있었다
앞으로 풀이 할 땐 배운 것들을 활용해서 풀어봐야겠다
+ StringBuilder 클래스가 잘 활용하면 편할 것 같다는 생각이 든다
StringBuilder 클래스의 주요 메서드에는 append, insert, delete, replace, repeat, reverse 등이 포함된다
numbers의 num1부터 num2까지의 배열을 새로 만드는 문제
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2 - num1 + 1]; // 정답 배열 초기화
for (int i = num1; i <= num2; i++) {
answer[i - num1] = numbers[i];
}
return answer;
}
}
// return Arrays.copyOfRange(numbers, num1, num2 + 1); // Arrays.copyOfRange를 써서 한줄로 표현가능
Arrays.copyOfRange(배열,시작,끝) 을 사용하면 배열의 시작부터 끝에 해당하는 요소를 얻을 수 있다는 점을 알았다!
.toCharArray 사용
class Solution {
public String solution(String my_string, String letter) {
StringBuilder answer = new StringBuilder();
// for (int i = 0; i < my_string.length(); i++) {
// char ch = my_string.charAt(i);
// if (ch != letter.charAt(0)) {
// answer.append(ch);
// }
// }
// return answer.toString();
char[] arr = my_string.toCharArray(); // 문자열을 문자 배열로 변환
for(char ch : arr){
if(ch!=letter.charAt(0)){
answer.append(ch);
}
}
return answer.toString();
}
}
// String answer = "";
// answer = my_string.replace(letter, ""); 이렇게도 가능
// return answer;
5~11줄 주석으로 처리한 부분이 내가 작성한 부분인데 .toCharArray() 메서드를 이용한 방법도 있었다
맨 밑 주석처럼 String에도 replace함수가 사용가능하다는 점을 알았다
(StringBuilder 클래스만 가능한 줄 알았다)
String.split(), String .repeat() 사용
class Solution {
public String solution(String my_string, int n) {
String answer = "";
String[] str = my_string.split("");
for(int i = 0 ; i < my_string.length() ; i ++){
answer += str[i].repeat(n);
}
// for(int i = 0 ; i < my_string.length() ; i ++){
// for(int j = 0; j < n ; j ++) {
// answer += my_string.charAt(i);
// }
// }
return answer;
}
}
String에 split함수가 사용가능하고 배열에 repeat도 가능하다는 것을 알게 되었다
파이썬과 같이 풀다보니 비슷한 점도 꽤 있는 것 같았고 비슷해서 헷갈리는 부분도 있었다
아직 난이도가 낮아서 그런지 파이썬이 편하기만 하다
오늘 TIL강의를 듣고 처음 써보지만 조금씩이라도 자주 쓰려고 노력해야겠다
'TIL' 카테고리의 다른 글
2023-10-24 TIL(프로그래머스) (0) | 2023.10.24 |
---|---|
2023-10-23 TIL(컬랙션) (0) | 2023.10.23 |
2023-10-20 TIL (추상클래스와 인터페이스의 차이점) (2) | 2023.10.20 |
2023-10-19 TIL (git, 프로그래머스) (0) | 2023.10.19 |
2023-10-18 TIL (프로그래머스) (2) | 2023.10.19 |
댓글