[Coding Test] 프로그래머스 1단계 - 푸드 파이트 대회
📚 문제
✏️ 메모
f[0]은 항상 1.
f[1]부터 봐야함.
f[i] / 2 의 몫의 수 만큼 i 를 문자열에 담아야 함.
food 배열이 끝났을 때 0 을 붙이고,
0 이전에 나온 값을 뒤집어서 나열하기.
https://hianna.tistory.com/543
[Java] 문자열 거꾸로 뒤집기
문자열을 거꾸로 뒤집는 방법 2가지를 소개합니다. 반복문 사용하기 StringBuffer / reverse() 메소드 사용하기 1. 반복문 사용하기 코드 public class StringReverse { public static void main(String[] args) { // 문자열 S
hianna.tistory.com
🔎 문제해결
1. StringBuilder 사용
public static String solution(int[] food) {
StringBuilder answer = new StringBuilder();
// 1. f[1]부터 순회
for (int i = 1; i < food.length; i++) {
// 2. f[i] / 2 의 몫 만큼 i를 문자열에 추가
for (int j = 0; j < food[i] / 2; j++) {
answer.append(i);
}
}
// 3. 중간에 0 추가
answer.append(0);
// 4. 현재 문자열의 0 이전 부분을 뒤집어서 추가
StringBuilder reversedPart = new StringBuilder(answer.substring(0, answer.length() - 1)).reverse();
answer.append(reversedPart);
return answer.toString();
}
2. + 연산자 사용
public static String solution(int[] food) {
String answer = "";
// 1. f[1]부터 순회
for (int i = 1; i < food.length; i++) {
// 2. f[i] / 2 의 몫 만큼 i를 문자열에 추가
for (int j = 0; j < food[i] / 2; j++) {
answer += i;
}
}
// 3. 중간에 0 추가
answer += 0 ;
// 4. 현재 문자열의 0 이전 부분을 뒤집어서 추가
for (int i = answer.length() -2; i >= 0; i-- ){
// answer 문자열의 0 이전 인덱스부터 읽어서 하나씩 이어붙임.
answer = answer + answer.charAt(i);
}
return answer;
}
💡 StringBuilder 와 + 연산자, concat 의 차이점
concat 명령어는 더하는 값을 new String 으로 계속 만들어서, 추가할 때마다 새로운 주소값을 할당 시킨다.
StringBuilder 명령어는 append 를 통해 문자열을 붙여주는데, 추가할 때에도 주소값이 변화하지 않는다.
+ 연산자는 문자열을 StringBuilder 로 변환한 뒤, append 로 문자열을 더하고, 다시 toString 함수로 문자열로 반환한다.
[JAVA] 문자열 붙이는 방식의 차이(concat, +, StringBuilder)
자바에서 String타입을 붙일 때 사용하는 방법은 다양하다. 기본 연산자인 +를 비롯하여 String Builder, concat 모두 들어보거나 써본 용어일 것이다. 근데 동작 방식에 어떤 차이가 있을까? 먼저 결과
devdy.tistory.com