-
[프로그래머스] 9로 나눈 나머지알고리즘 노트 2023. 10. 17. 11:25
이 문제는 결국 모든 String을 하나씩 더하고 9로 나눈 값을 구하라는 뜻과 같습니다.
즉, String을 char형으로 변경한 후 loop를 돌며 더한 값을 9로 나누라는 것이죠.
[문제풀이]
1. IntStream의 range()함수를 사용하여 number 문자열의 길이만큼 loop를 구현합니다.
2. mapToLong타입으로 문자열을 숫자로 변환해줍니다.
3. sum()을 통해 구해진 Long값을 더한 후 9로 나누어 나머지를 정수형으로 반환해줍니다.
이렇게 풀어도 사실 다르지는 않습니다만, String을 Long으로 바꾸고 다시 Long을 int형으로 바꾸며 캐스팅 시 데이터 유실의 위험성이 있습니다.
다른 분 코드를 참고하여 이렇게 수정해 보았습니다.
[문제풀이]
1. number 문자열의 chars()함수를 사용하여 loop를 구현합니다. 이는 character형태로 반환되며 사용하는 i 값은 ascii코드 값으로 반환되는 특징이 있습니다.
2. i에서 '0'의 ascii코드 값을 빼주면 원하는 정수의 값이 나옵니다. 예를 들어 첫번째 문자열인 7은 ascii에선 55이며, 0은 ascii에선 48입니다. 이를 빼줄 시 7을 얻을 수 있습니다.
3. sum()을 통해 구해진 int값을 도한 후 9로 나누어 나머지를 반환해줍니다.
이 방식은 매우 간결하게 구현이 가능하나, 모든 char형을 ascii 코드값으로 계산해야 하기에 오히려 복잡할 수도 있다는 단점이 있습니다.
'알고리즘 노트' 카테고리의 다른 글
[프로그래머스] 배열 만들기 5 (0) 2023.10.18 [프로그래머스] 문자열 여러번 뒤집기 (0) 2023.10.17 [프로그래머스] 글자 이어 붙여 문자열 만들기 (0) 2023.10.17 [프로그래머스] 주사위 게임 3 (0) 2023.10.17 [프로그래머스] 간단한 논리 연산 (0) 2023.10.17