객체 - 테이블 맵핑 : @Entity, @Table
필드 - 컬럼의 팹핑 : @Column
기본키의 맵핑 : @Id
조인 맵핑 : @ManyToOne, @JoinColumn
@Entity 어노테이션을 클래스에 선언하면 그 클래스는 JPA가 관리한다.
그러므로 DB의 테이블과 Class(VO, DTO)와 맵핑한다면 반드시 @Entity를 붙여주어야 한다.
@Table 어노테이션은 맵핑할 테이블을 지정합니다.
@Column 어노테이션은 객체 필드와 DB 테이블 컬럼을 맵핑합니다.
JPA가 객체를 관리할 때 식별할 기본키를 지정합니다.
참조: [Spring-boot JPA] 맵핑 어노테이션 @Entity, @Table, @Column, @Id 속성과 개념 정리
햄버거 만들기
1(빵),2(채소),3(고기),1(빵)이 순서대로 들어오는 경우 햄버거를 한 개 만들었다고 카운트 한다. 만약 1, 1, 2, 3, 1, 2, 3, 1, 이라면 첫 번째 햄버거가 만들어지고 남은 순서인 1, 2, 3, 1로 다시 햄버거를 만들 수 있다.
실패한 나의 첫번째 답안 (시간 초과로 하다만 것..)
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
ArrayList<Integer> ingredientList = new ArrayList<Integer>(Arrays.asList(2,1,1,2,3,1,2,3,1)); //ArrayList로 전환
int order = 1;
for (int i = 0; i <= ingredientList.size(); i++) {
if (i == ingredientList.size()) {break;}
if (order == ingredientList[i]) {order++;}
else {order = 1;}
if (order == 4) {
ingredientList.subList(i-3, i).clear();
i = 0;
}
}
int answer = 0;
return answer;
}
}
병두님의 도움을 받아 작성한 답안
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
Stack<Integer> stack = new Stack<>(); //stack 만들기
int count = 0;
for (int i : ingredient) {
stack.add(i);
if (stack.size() >= 4 && stack.elementAt(stack.size() - 1) == 1
&& stack.elementAt(stack.size() - 2) == 3
&& stack.elementAt(stack.size() - 3) == 2
&& stack.elementAt(stack.size() - 4) == 1) {
count++;
stack.pop();stack.pop();stack.pop();stack.pop();
}
}
return count;
}
}
다른 사람의 답안
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int[] stack = new int[ingredient.length]; //stack 만들기
int sp = 0;
int count = 0;
for (int i : ingredient) {
stack[sp++] = i;
if (stack.length >= 4
&& stack[sp - 1] == 1
&& stack[sp - 2] == 3
&& stack[sp - 3] == 2
&& stack[sp - 4] == 1) {
count++;
sp -= 4; //index를 -4 낮춰 햄버거로 만들어진 재료를 제거
}
}
return count;
}
}