알고리즘_Algorism/프로그래머스
[프로그래머스] lv.1 푸드 파이트 대회 (JAVA 자바)
Jye_647
2023. 8. 2. 22:36
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
첫 번째 풀이
- food의 index값이 1, 짝수, 홀수 일 때를 나눠서 비교한다.
- 해당 조건에 적합하면 Integer.toString을 통해 int형을 String형으로 변경해 주고 값을 넣어준다.
- 위의 answer값을 for문을 통해 내림차순으로 값을 넣어준다.
두번째 풀이
- StringBuilder를 선언한다.
- 이중 for문을 통해 해당 값을 builder에 추가해 준다.
- reverse() 메서드를 통해 반대되는 순서도 추가해 준다.
실패 풀이 코드
public String solution(int[] food) {
List<Integer> list = new ArrayList();
for(int i=1; i<food.length; i++){
if(food[i] == 1){
continue;
}else if(food[i] % 2 == 0){
for(int j=0; j<food[i]/2; j++){
list.add(i);
}
}else{
for(int j=0; j<(food[i]-1)/2; j++){
list.add(i);
}
}
}
String answer = list.toString() + "0";
Collections.reverse(list);
answer += list.toString();
return answer;
}
결과 : 아래와 같은 형식으로 작성되어 실패
[1, 2, 2, 3, 3, 3]0[3, 3, 3, 2, 2, 1]
[1, 1, 1, 3]0[3, 1, 1, 1]
첫 번째 풀이 코드
public String solution(int[] food) {
String answer = "";
// 인덱스 1부터 시작 index[0]은 물이다.
for(int i=1; i<food.length; i++){
if(food[i] == 1){ // index값이 1이면 넘긴다.
continue;
}
else if(food[i] % 2 == 0){
for(int j=0; j<food[i]/2; j++){
// index값이 짝수일때 food[i]/2만큼 toString을 사용하여 값 넣어준다.
answer+=Integer.toString(i);
}
}else{
for(int j=0; j<(food[i]-1)/2; j++){
// index값이 홀수일때 food[i]/2만큼 toString을 사용하여 값 넣어준다.
answer+=Integer.toString(i);
}
}
}
String reverse = "";
// 반대되는 값을 for문으로 역순으로 넣어준다.
for(int i=answer.length()-1; i>=0; i--){
if(i==answer.length()-1) reverse += "0";
reverse += answer.charAt(i);
}
return answer + reverse;
}
두 번째 풀이 코드
public String solution(int[] food) {
// StringBuilder를 사용한다.
StringBuilder sb = new StringBuilder();
for(int i=1; i<food.length; i++){
for(int j=0; j<food[i]/2; j++){
// 이중for문을 이용하여 값 추가
sb.append(i);
}
}
// sb에 toString()을 붙이지 않으면 reverse()값이 출력된다.
return sb.toString() + "0" + sb.reverse();
}
StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가지게 되어,
문자열을 바로 추가할 수 있어 공간의 낭비도 없으며 문자열 연산 속도도 매우 빠르다는 특징이 있다.
☕ 자바 String / StringBuffer / StringBuilder 차이점 & 성능 비교
자바에서는 대표적으로 문자열을 다루는 자료형 클래스로 String, StringBuffer, StringBuilder 라는 3가지 자료형을 지원한다. 위 3가지 클래스 자료형은 모두 문자열을 다루는데 있어 공통적으로 사용되
inpa.tistory.com