일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- .net
- 에스가든스냅
- EFCore
- JavaScript
- 코드프로그래머스
- scanner
- intellij
- minimalAPI
- extjs
- ViewModel
- Config
- mac
- JSON
- Store
- 라도무스dvd
- extraParams
- Request
- ORM
- 상속
- error
- vscode
- LINQ
- React
- lazy loading
- 명시적외래키
- dbContext
- c#
- c#코딩의기술실전편
- 대전본식영상
- 스냅잘찍음
- Today
- Total
ejyoo's 개발 노트
[프로그래머스-코딩기초트레이닝] 문자열변환 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181952
[문제]
정수 n이 주어질 때, n을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.
[제한사항]
1 ≤ n ≤ 10000
[입출력예]
- 입출력 예 #1
123을 문자열로 변환한 "123"을 return합니다.
- 입출력 예 #2
2573을 문자열로 변환한 "2573"을 return합니다.
내가 입력한 답
나는 Java에서 제공하는 기본 메서드를 활용하여 문제를 해결하였다.
class Solution {
public String solution(int n) {
String answer = Integer.toString(n);
return answer;
}
}
다른 풀이 보기
다른 사람이 푼 답안을 보다가 신기한 것을 발견했다.
String answer = "" + n;
이 방법은 자바에서의 문자열 연결 특성을 활용한 것이다.
빈 문자열 ("")에 문자열 연결 연산자 '+'를 사용하여 문자열로 자동 변환되도록 하였다.
'+' 문자열 연결 연산자는 문자열과 다른 데이터 타입(int, double 등)이 '+' 연산자로 만나게 되면,
그 데이터 타입은 문자열로 자동으로 변환된다.
따라서 위의 "" + n 는 n을 문자열로 변환하고 빈 문자열에 연결하는 것과 같으므로 결과적으로 n이 문자열로 변환되는 것이다.
무엇이 더 좋을까? (개인적)
나는 명확한 Integer.toString(n)이 좋은 것 같다.
""+문자열 은 코드가 짧아서 간결하지만, 직관적이지 않다.
연산 측면에서 성능은?
String answer = "" + n; 과 String answer = Integer.toString(n); 은 기본 연산이라서 이러한 생각이 무의미 할 수 있다.
그래서 각각이 수행되는 '원리' 에 대해 생각해볼 필요는 있을 것 같다.
String answer = "" + n; 방식은,
빈 문자열과 정수를 연결하기 위해 문자열 연결 연산이 필히 발생된다.
자바 내부에서 StringBuilder나 StringBuffer를 객체를 생성하고 문자열 연산을 수행한다.
반면에 String answer = Integer.toString(n); 은 직접적인 변환 메서드이기 때문에 추가적인 객체 생성이 없다.
위의 원리를 보았을 때 데이터가 1억개정도라면.. String answer = Integer.toString(n); 방식이 더 빠르지 않을까 싶다.
실제 성능 차이는 JVM 최적화나 설정 그리고 컴퓨터 사양에 따라 달라지지 않을까..?
만약에 정수가 아닌 것이 온다면? 어떻게해야할까?
문제는 정수만 언급했는데 만약에 정수가 아니라면?
그럴때는 String.valuesOf(n) 를 사용하면 된다.
String answer = String.valueOf(n);
Integer.toString(n) 과는 기능적인 차이가 없지만, (둘 다 정수를 문자열로 변환하는 작업)
차이점은 String.valueOf(n) 가 더 범용적이다.
이 메서드는 n에 다양한 타입의 인수 (boolean, char, float, int, long 등)를 받고, 문자열로 변환할 수 있어서 일관성을 유지할 수 있다.
그렇지만,
문제에서는 '정수' 만을 문자열로 변환한다고 했으니, Integer.toString(n)을 사용하는게 더 직관적인 것 같다.
'문제풀이 > 코드프로그래머스 문제풀이' 카테고리의 다른 글
[코딩 기초 트레이닝] 문자열 출력하기 (0) | 2023.10.12 |
---|---|
완주하지 못한 선수 (0) | 2021.03.04 |
크레인 인형뽑기 (0) | 2021.03.03 |
신규 아이디 추천하기 (0) | 2021.03.03 |