Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- entity
- SQL
- html tag
- stringbuffer
- 부스트코스
- 부트캠프
- @AllArgsConstructor
- 깃허브
- DTO
- 상속
- 프로그래머스
- java
- git
- 기본생성자
- 알고리즘
- Codeup
- 캡슐화
- 에러
- HashSet
- 브랜치
- CRUD
- @NoArgsConstructor
- 코드업
- @builder
- lv1
- github
- HTML
- Python
- 파이썬
- 자바
Archives
- Today
- Total
잉?
[프로그래머스] lv.1 푸드 파이트 대회 (JAVA 자바) 본문
첫 번째 풀이
- 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)라고 하는 독립적인 공간을 가지게 되어,
문자열을 바로 추가할 수 있어 공간의 낭비도 없으며 문자열 연산 속도도 매우 빠르다는 특징이 있다.
'알고리즘_Algorism > 프로그래머스' 카테고리의 다른 글
[프로그래머스] lv.1 추억 점수 (JAVA 자바) (0) | 2023.08.08 |
---|---|
[프로그래머스] lv.1 콜라 문제 (JAVA 자바) (0) | 2023.08.04 |
[프로그래머스] 두 개 뽑아서 더하기 (JAVA 자바) (0) | 2023.07.31 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (JAVA 자바) (0) | 2023.07.27 |
[프로그래머스] 직사각형 넓이 구하기 + 다차원 배열(2차원 배열) (0) | 2023.06.14 |
Comments