오늘의 문제는 프로그래머스
자연수 뒤집어 배열로 만들기
문제
문제 접근 및 풀이 과정
문제의 권장 풀이 시간은 30분이었고, 저는 20분에 걸려 풀었습니다.
로직을 수기로 작성한 상태에서 코드를 작성했기 때문에 수월하게 풀 수 있을 줄 알았지만, 반복문의 조건과 본문을 잘못 설정해서 예상보다 시간이 조금 더 걸리게 됐습니다.
문제 접근 방식
처음 문제를 접했을 때 든 생각은 '반복문을 사용한 단순 구현문제'구나 였습니다.
그래서 우선, 주어진 n을 문자열로 변환해서 각 인덱스에 접근하기 쉽게 하는것이 좋겠다고 생각했습니다.
그 다음 반복문을 통해 문자를 역순으로 배열에 저장하도록 설계했습니다.
문제 풀이
class Solution {
public int[] solution(long n) {
String str = String.valueOf(n);
int len = str.length();
int[] answer = new int[len];
for (int i = 0; i < len; i++) {
answer[i] = str.charAt(len - 1 - i) - '0';
}
return answer;
}
}
자연수 n을 문자열로 변환한 이유는?
n을 문자열로 변환하면 각 자릿수에 charAt을 사용해서 쉽게 접근을 할 수 있습니다.
자연수 그대로 코드를 짤려면 10으로 나눈 나머지를 추출하는 번거로운 작업을 해야 하기 때문에 비효율 적이라고 판단했습니다.
반복문 설계 자세히 알아보기
반복문은 초기화 부분과 본문 부분으로 나뉩니다.
반복문 초기화
(int i = 0; i < len; i++)
위 코드에서 i는 0으로 초기화되어 i < len까지 반복되고 반복이 끝날 때마다 i값은 1씩 증가합니다.
반복문 본문
answer[i] = str.charAt(len - 1 - i) - '0';
answer[i]는 저장할 배열의 인덱스를 의미합니다.
str.charAt(len - 1 - i)는 문자열 인덱스의 뒤에서 i번째 문자를 가져오는 부분입니다.
코테를 풀다보면 문자열 인덱스를 다루는 부분이 많이 나오는데 나올 때마다 손에 익히고 있습니다.
그리고 여기서 -'0'이 나오는 이유는 문자를 숫자로 변환해야 하기 때문입니다.
이렇게 오늘 1일차 TIL을 작성해 보았습니다.
'🍪 Ect > #Study' 카테고리의 다른 글
[99클럽 코테 스터디] 6일차 TIL 해시 (0) | 2024.07.27 |
---|---|
[99클럽 코테 스터디] 5일차 TIL 해시 (0) | 2024.07.26 |
[99클럽 코테 스터디] 4일차 TIL 문자열 (0) | 2024.07.25 |
[99클럽 코테 스터디] 3일차 TIL 문자열 (0) | 2024.07.25 |
[99클럽 코테 스터디] 2일차 TIL 배열 (0) | 2024.07.23 |
댓글