문제
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 뒤의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 숫자와 알파벳으로 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ n ≤ my_string의 길이
입출력 예
my_string | n | result |
"ProgrammerS123" | 11 | "grammerS123" |
"He110W0r1d" | 5 | "W0r1d" |
입출력 예 설명
입출력 예 #1
- 예제 1번의 my_string에서 뒤의 11글자는 "grammerS123"이므로 이 문자열을 return 합니다.
입출력 예 #2
- 예제 2번의 my_string에서 뒤의 5글자는 "W0r1d"이므로 이 문자열을 return 합니다.
Solution.java
class Solution {
public String solution(String my_string, int n) {
String answer = "";
char[] my_stringC = my_string.toCharArray();
for(int i=0; i<n; i++){
answer += my_stringC[my_stringC.length-n+i];
}
return answer;
}
}
문자열(string)로 주어진 my_string을 문자(char) 배열인 my_stringC로 바꾼 후, for 문을 통해 배열의 값에 접근하며 answer를 생성하고 최종으로 return 하는 방법을 생각해 문제를 풀었다. 특히 for 문의 내부를 작성할 때 신경을 썼다.
예시로 주어진 'ProgrammerS123'의 경우 문자 배열의 길이는 14, n은 11, answer에 들어가야 하는 부분은 index 3~13이었다. 우선 for 문에서 i의 값 설정을 통해 내부가 총 11번(i가 0~10일 때) 실행되도록 했다. answer의 전체 길이(11)의 설정을 완료한 셈이다. 그리고 내부에서 my_stringC의 index 3~13을 answer에 넣어야 하기에 my_stringC.length-n+i라는 부분을 my_stringC의 index로 작성해 주었다.
이렇게 수학적으로 접근해 코드를 작성했을 때에도 테스트 케이스까지 잘 작동되었지만, 다른 사람들의 코드를 보니 굉장히 간결하게 작성된 경우가 많아 사람들이 가장 많이 작성한 코드를 가져와보았다.
class Solution {
public String solution(String my_string, int n) {
return my_string.substring(my_string.length() - n);
}
}
자바의 substring() 메소드를 사용해 문자열을 자르는 방법을 사용한 코드였다. 메소드의 int 형의 인자값은 '문자열의 앞에서부터 몇 번째 위치인가'를 의미하며, substring() 메소드는 입력받은 인자값을 index로 해당 위치를 포함해 이후의 모든 문자열을 return 한다고 한다.
즉, 주어진 문제에서 '(문자열의 전체 크기) - n = (answer의 첫 번째 index 값)'이기에 이를 substring()의 인자로 주면 간단하게 해결되는 것이다.
substring() 메소드를 활용할 줄 몰라 번거롭게 문제를 해결했는데, 이번 기회를 통해 공부할 수 있었다 :)
'프로그래머스 > Lv. 0' 카테고리의 다른 글
[Java/자바] 프로그래머스 Lv. 0 n 번째 원소까지 (0) | 2023.07.24 |
---|---|
[Java/자바] 프로그래머스 Lv. 0 자릿수 더하기 (0) | 2023.07.19 |
댓글