https://www.acmicpc.net/problem/2852 2852번: NBA 농구 첫째 줄에 골이 들어간 횟수 N(1Date로의 형변환이 가능했음 - getTime을 했을 때 반환되는 수가 음수가 나왔었다. 이는 한국 시간의 오류로 32400000를 더해주어 해결했다. 제출코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.StringTokenizer; public class Main {..
분류 전체보기
https://www.acmicpc.net/problem/9079 9079번: 동전 게임 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 세 줄로 이루어지며, 한 줄에 세 개의 동전모양이 주어지는데, 각각의 동전 표시 사이에는 하나의 공백이 www.acmicpc.net 풀이 사용한 알고리즘 : 비트마스크, bfs 풀이전략 1. 주어지는 3x3 행렬을 2진수 숫자 하나로 변환한다. ex) H=1, T=0이라고 할 때, HTT HTT = 100100011(2) THH 2. 행을 하나 뒤집었을 경우, 열을 하나 뒤집었을 경우, 대각선으로 뒤집었을 경우 등 가능한 모든 경우를 탐색하기 위해 BFS를 사용한다. 이 때, 연산을 수행할 때마다 count를 1 증가시킨..
https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 풀이 사용한 알고리즘 : 큐 풀이전략 1. 0~9의 수를 큐와 리스트에 추가한다. 2. 큐의 원소를 하나씩 deQueue하고 그 수보다 작은 수를 찾은 뒤 '(deQueue한 원소)x10 + (원래 원소보다 작은 찾은 수)'를 리스트에 추가한다. 이를 큐가 빌 때까지 반복한다. 3. 리스트의 N번째 값을 출력한다. 제출코드 import java.util.Main*; public cl..
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 사용한 알고리즘 : 백트래킹 풀이전략 아래 그림은 N=4인 경우, 모든 경우의 수를 탐색할 수 있도록 만들어진 상태공간트리이다. (상태 공간 : 문제의 해답을 탐색하기 위한 탐색 공간, 상태공간트리 : 탐색 공간을 트리 형태의 구조로 암묵적으로 해석한 트리) (1,1)은 1번 행 1번째 열에 퀸을 둔다는 의미이다. 1. 위와 같은 트리를 탐색하는 중 해당 노드가 이전 노드와 비교했을 경우, 같은 열 또는 대..
목표 Local/Session Storage 사용법을 익히고, Object/Array와 JSON 간 쌍방 형식 변환을 수행한다. Local Storage : 반영구적으로 데이터를 저장함 Session Storage : 휘발성 저장소, 새로고침하거나 브라우져 껏다 켜면 저장시켜놓은 데이터가 사라짐 위와 같이 개발자 모드(F12)에서 Local Storage에 데이터를 저장하고 삭제할 수 있다. Session Storage에 저장하고 싶다면, 위의 localStorate 대신 sesseionStorage로 작성한다. 코드에서 Object/Array 데이터를 JSON 형식으로 Local Storage에 저장하기 function App() { let obj = {name : 'kim'} localStorage...
목표 값 타입 컬렉션에 대해 알아보고 이를 코드를 통해 저장, 조회, 수정해본다. 값 타입 컬렉션 - 값 타입을 하나 이상 저장할 때 사용한다. - @ElementCollection, @CollectionTable을 사용한다. - 데이터베이스는 컬렉션을 같은 테이블에 저장할 수 없다. - 컬렉션을 저장하기 위한 별도의 테이블이 필요하다. (일대다 등의 매핑을 통해 서로 연관되도록 할 것임) @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name="MEMBER_ID") private Long id; @Column(name="USERNAME") private String username; ...(생략)... @Element..
목표 인스턴스가 달라도 그 안의 값이 같으면 같은 것으로 볼 수 있게한다. (특히 참조 객체에서) int a = 5; int b = 5; System.out.println("a==b : " + (a==b)); // true City city1 = new City("Seoul", "street", "10000"); City city2 = new City("Seoul", "street", "10000"); System.out.println("city1==city2 : " + (city1==city2)); // false System.out.println("city1==city2 : " + (city1.equals(city2))); // false 값 타입 비교 1) 동일성(identity) 비교 : 인스턴스..
값 타입이란? String, int와 같은 특정 값을 저장하는 타입 - 복잡한 객체 세상을 조금이라도 단순화하려고 만든 개념으로, 단순하고 안전하게 다룰 수 있어야한다. 값 타입 공유 참조 - 임베디드 타입같은 값 타입을 여러 엔티티에서 공유할 수 있다. - 단, 여러 엔티티에서 공유하는 경우 하나의 엔티티에서 값을 변경하면 의도치않게 함께 공유했었던 엔티티에서의 값도 변하는 부작용(side effect)이 발생할 수 있다. Address address = new Address("city", "strett", "10000"); Member member = new Member(); member.setUsername("member1"); member.setHomeAddress(address); em.pers..
임베디드 타입이란? 기본 값 타입을 모아서 만든 새로운 복합 값 타입으로 JPA에서 임베디드 타입이라고 한다. 장점 1) 재사용도 높음 2) 높은 응집도 3) 해당 값 타입만 사용하는 의미있는 메소드를 만들 수 있음(2번 장점과 연관) 4) 임베디드 타입을 포함한 모든 값 타입은,값 타입을 소유한 엔티티에 생명주기를 의존함 임베디드 타입과 테이블 매핑 - 임베디드 타입은 엔티티의 값이다. - 임베디드 타입을 사용하기 전과 후에 매핑하는 테이블을 같다. - 객체와 테이블을 아주 세밀하게 매핑하는 것이 가능하다. - 잘 설계한 ORM 애플리케이션은 매핑한 테이블의 수보다 클래스의 수가 더 많다. @Entity @Getter @Setter public class Member { @Id @GeneratedVal..
https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 사용한 알고리즘 : DFS 풀이전략 1. 이중 ArrayList를 사용하여 각 노드가 가지고 있는 자식 노드의 번호를 저장한다. 2. 각 노드들의 부모 노드 번호를 저장하는 배열을 만든다. 3. 제거한 노드의 부모노드에 대응되는 ArrayList에서 제거한 노드의 번호를 삭제한다. 4. DFS를 통해 트리를 탐색하고, 방문한 노드 중 자식 노드가 없는 경우 count를 1씩 더한다. 제..