[Programmers][Java] 문자 반복 출력

Myung A Lee·2023년 7월 31일
0

CodingTest

목록 보기
2/11
post-thumbnail

[level 0] 문자 반복 출력하기 - 문제 링크

문제 설명

문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항
  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

입출력 예
my_string n result
"hello" 3 "hhheeellllllooo"

나의 답안

class Solution {
    public String solution(String my_string, int n) {
      char [] answerArr = new char[my_string.toCharArray().length*n];

		for (int i = 0; i < answerArr.length;) {
			for (int j=0; j<my_string.toCharArray().length;j++) {
				for(int k=1; k<=n; k++) {
					answerArr[i]=my_string.toCharArray()[j];
					i++;
				}
			}	
		}

		String answer = String.valueOf(answerArr);
        return answer;
    }
}

배열의 문자열 반환

나는 주어진 String매개별수를 char[]로 바꾸고 길이에 n을 곱해 새로운 char[]을 준비 해뒀다.
그리고 순서대로 값을 채웠는데 그 과정에서 for문을 삼중으로 돌리게 될 줄은 사실 몰랐다.
좀 더 간단한 방법이 있을 것도 같았는데 전체 배열에 매개변수 배열을 순서대로 n번 만큼 차근차근 해결하려다 보니 이렇게 됐다
다른 사람들의 풀이를 보니 n번 for문을 돌리는 대신 repeat(n)을 사용해서 n번 만큼 사용하더라

아 근데 처음에 String.valueOf(answerArr) 대신 answerArr.toString을 썼는데 그러니까 내가 원한 결과가 아니라 메모리 주소값 같은게 튀어나와서 어리둥절 했었다. 관련해서 찾아보니 내가 toString에 대해 잘 못 생각하고 있던게 좀 있어서 이 기회에 정리해두려 한다.

배열을 문자형으로 변환하는 방법

배열을 toString() 메서드로 변환하면, 해당 배열의 실제 내용 대신 배열의 타입과 해시 코드가 포함된 문자열이 반환된다. 따라서 answerArr.toString()은 실제 배열의 내용이 아니라 해당 배열의 타입과 해시 코드를 문자열로 표현한 값이 반환된다.
Ex)char[] answerArr = {'a', 'b', 'c'};와 같은 배열이 있다면 answerArr.toString()은 [C@7c30a502와 같은 문자열이 반환
따라서 배열을 문자열로 변환하기 위해서는 String.valueOf(answerArr)와 같이 String 클래스의 정적 메서드를 사용하거나, new String(answerArr);와 같이 String 클래스의 생성자를 사용하는 것이 적절하다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges

0개의 댓글