자바 백준 3653번 영화 수집
시간초과 ㅇㅇㅇㅇㅇㅇㅇㅇㅇ아ㅏㅏㅏㅏㅏ
'백준 알고리즘 > JAVA' 카테고리의 다른 글
자바 백준 2231번 분해합 (0) | 2018.08.23 |
---|---|
자바 백준 2309번 일곱 난쟁이 (0) | 2018.08.16 |
자바 백준 9375번 패션왕 신해빈 (0) | 2018.08.13 |
자바 백준 7785번 회사에 있는 사람 (0) | 2018.08.11 |
자바 백준 1357번 뒤집힌 덧셈 (0) | 2018.08.10 |
자바 백준 3653번 영화 수집
시간초과 ㅇㅇㅇㅇㅇㅇㅇㅇㅇ아ㅏㅏㅏㅏㅏ
자바 백준 2231번 분해합 (0) | 2018.08.23 |
---|---|
자바 백준 2309번 일곱 난쟁이 (0) | 2018.08.16 |
자바 백준 9375번 패션왕 신해빈 (0) | 2018.08.13 |
자바 백준 7785번 회사에 있는 사람 (0) | 2018.08.11 |
자바 백준 1357번 뒤집힌 덧셈 (0) | 2018.08.10 |
자바 백준 9375번 패션왕 신해빈
이 문제는 공식을 먼저 찾아야 쉽게 풀 수 있는 문제라고 생각한다.
그리고 같은 이름을 가진 의상이 존재하지 않는다는 조건에서 의상의 이름은 문제를 푸는데 없어도 된다는 점을 잘 파악하여야한다. 즉, 의상의 종류만으로 문제를 풀 수 있다는 것이다.
다음은 그 공식을 표로 나타낸 그림이다.
여기서 공식을 찾을 수 있다. 공식 = (같은 종류의 의상 수 +1)*(같은 종류의 의상 수 +1) *....... *(같은 종류의 의상 수 +1)-1
같은 종류의 의상이 들어오면 HashMap을 이용해 그에 해당하는 키값의 value값을 1씩 증가시키고 새로운 의상이 들어오면 그에 해당하는 키값의 value값에 새로운 숫자 1을 넣는다. 이것을 Map 내장 메소드 HashMap.values()를 사용하여 모든 키값의 value 값을 불러와 위와 같은 공식으로 계산하면 된다.
자바 백준 2309번 일곱 난쟁이 (0) | 2018.08.16 |
---|---|
자바 백준 3653번 영화 수집 (0) | 2018.08.14 |
자바 백준 7785번 회사에 있는 사람 (0) | 2018.08.11 |
자바 백준 1357번 뒤집힌 덧셈 (0) | 2018.08.10 |
자바 백준 2864번 5와 6의 차이 (0) | 2018.08.08 |
프레임워크와 플랫폼 (0) | 2018.11.22 |
---|---|
SpringFramework 트랜잭션 전파 속성 (0) | 2018.08.11 |
Springframework 트랜잭션 / TransactionTemplate (0) | 2018.08.10 |
Springframework JDBC (0) | 2018.08.10 |
Spring framework Validator 검증 (0) | 2018.08.08 |
http://jeong-pro.tistory.com/95?category=793347
객체지향이 뭔가요?
자바의 추상 클래스와 인터페이스
https://m.blog.naver.com/hue2music/221327417963
IT. 취준. 웹/SW 개발 취업 준비 - 면접 정리 -
restful api 란? (0) | 2018.08.31 |
---|---|
프로그래머 면접 질문 (0) | 2018.07.23 |
인사 (0) | 2018.07.02 |
자바 백준 7785번 회사에 있는 사람
회사에 동명이인이 없다는 부분에서 LIST가 아니라 SET이 쓰는 것이 맞다.
LIST를 사용한 코드와 SET을 사용한 코드 둘 다 업로드 하려고 한다.
LIST 같은 경우에는 인덱스로 객체를 관리하기 때문에 get으로 이래저래해서 답을 쉽게 얻을 수 있다.
Set은 인덱스로 객체를 관리하지 않기 때문에 데이터를 검색하기 위해서는 iterator() 메서드로 Iterator(반복자)를 생성하고 데이터를 가져와야 한다.
자바 백준 3653번 영화 수집 (0) | 2018.08.14 |
---|---|
자바 백준 9375번 패션왕 신해빈 (0) | 2018.08.13 |
자바 백준 1357번 뒤집힌 덧셈 (0) | 2018.08.10 |
자바 백준 2864번 5와 6의 차이 (0) | 2018.08.08 |
자바 백준 1652번 누울 자리를 찾아라 (0) | 2018.08.07 |
모든 트랜잭션이 같은 방식으로 동작하는 건 아니다. 전체가 같이 실패하거나 성공하는 하나의 작업으로 묶인다는 점에서는 다를바 없겠지만, 세밀히 따져보면 몇 가지 차이점이 있다. 스프링은 트랜잭션의 경계를 설정할 때 네 가지 트랜잭션 속성을 지정할 수 있다. 또, 선언적 트랜잭션에서는 롤백과 커밋의 기준을 변경하기 위해 두 가지 추가 속성을 지정할 수 있다. 선언적 트랜잭션 기준으로 보자면 모든 트랜잭션 경계는 여섯 가지 속성을 갖고 있는 셈이다.
SpringFramework의 트랜잭션 전파 속성
2개 이상의 트랜잭션이 작동할 때, 기존의 트랜잭션에 참영하는 방법을 결정하는 속성
REQUIRED
DEFAULT : 전체 처리
디폴트 속성이다. 모든 트랜잭션 매니저가 지원하며, 대개 이속성이면 충분하다. 미리 시작된 트랜잭션이 있으면 참여하고 없으면 새로 시작한다. 자연스럽고 간단한 트랜잭션 전파 방식이지만 사용해보면 매우 강력하고 유용하다는 사실을 알 수 있다. 하나의 트랜잭션이 시작된 후에 다른 트랜잭션 경계가 설정된 메소드를 호출하면 자연스럽게 같은 트랜잭션으로 묶인다.
SUPPORTS
기존 트랜잭션에 의존
이미 시작된 트랜잭션이 있으면 참여하고 그렇지 않으면 트랜잭션 없이 진행하게 만든다. 트랜잭션이 없긴 하지만 해당 경계 안에서 Connection이나 하이버네이트 Session 등을 공유할 수 있다.
MANDATORY
트랜잭션에 꼭 포함 되어야 함. (트랜잭션이 있는 곳에서 호출해야 함)
REQUIRED와 비슷하게 이미 시작된 트랜잭션이 있으면 참여한다. 반면에 트랜잭션이 시작된 것이 없으면 새로 시작하는 대신 예외를 발생시킨다. 혼자서는 독립적으로 트랜잭션을 진행하면 안 되는 경우에 사용한다.
REQUIRES_NEW ( <->REQUIRED)
각각 트랜잭션 처리(별도의 트랜잭션 처리)
REQUIRED의 반대라고 보면 된다. 항상 새로운 트랜잭션을 시작한다. 이미 진행 중인 트랜잭션이 있으면 트랜잭션을 잠시 보류시킨다. JTA 트랜잭션 매니저를 사용한다면 서버의 트랜잭션 매니저에 트랜잭션 보류가 가능하도록 설정되어 있어야 한다.
NOT_SUPPORTED ( <-> SUPPORTS)
트랜잭션에 포함 하지 않음(트랜잭션이 없는 것과 동일 함)
SUPPORTS의 반대. 트랜잭션을 사용하지 않게 한다 . 이미 진행 중인 트랜잭션이 있으면 보류시킨다.
NEVER ( <-> MANDATORY)
트랜잭션에 절대 포함 하지 않음. 트랜잭션이 있는 곳에서 호출하면 에러 발생
트랜잭션을 사용ㅈ하지 않도록 강제한다. 이미 진행 중인 트랜잭션도 존재하면 안된다. 있다면 예외를 발생시킨다.
NESTED
이미 진행중인 트랜잭션이 있으면 중첩 트랜잭션을 시작한다. 중첩 트랜잭션은 트랜잭션 안에 다시 트랜잭션을 만드는 것이다. 하지만 독립적인 트랜잭션을 마드는 REQUIRES_NEW와는 다르다.
중첩된 트랜잭션은 먼저 시작된 부모 트랜잭션의 커밋과 롤백에는 영향을 받지만 자신의 커밋과 롤백은 부모 트랜잭션에게 영향을 주지 않는다. 예를 들어 어떤 중요한 작업을 진행하는 중에 작업 로그를 DB에 저장해야 한다고 해보자. 그런데 로그를 저장하는 작업이 실패하더라도 메인 작업의 트랜잭션까지는 롤백해서는 안되는 경우가 있다. 힘들게 처리한 시급한 작업을 단지 로그를 남기는 작업에 문제가 있다고 모두 실패로 만들 수는 없기 때문이다. 반면에 로그를 남긴 후에 핵심 작업에서 예외가 발생한다면 이때는 저장한 로그도 제거해야 한다. 바로 이럴 때 로그 작업을 메인 트랜잭션에서 분리해서 중첩 트랜잭션으로 만들어 두면 된다. 메인 트랜잭션이 롤백되면 중첩된 로그 트랜잭션도 같이 롤백되지만, 반대로 중첩된 로그 트랜잭션이 롤백돼도 메인 작업에 이상이 없다면 메인 트랜잭션은 정상적으로 커밋된다.
프레임워크와 플랫폼 (0) | 2018.11.22 |
---|---|
Spring 프레임워크의 구성요소와 동작원리 (0) | 2018.08.11 |
Springframework 트랜잭션 / TransactionTemplate (0) | 2018.08.10 |
Springframework JDBC (0) | 2018.08.10 |
Spring framework Validator 검증 (0) | 2018.08.08 |
Springframework 트랙잭션
Dao 클래스에 PlatformTransctionManager 필드를 선언해준다.
트랜잭션 매니저를 이용하여 트랜잭션 처리를 할 곳에 트랙잭션 설정을 해준다.
밑에 두 줄은 공통으로 사용될 부분이다. 그 뒤 트랙잭션 처리할 부분을 try catch문으로 감싸게 된다.
/src/main/webapp/WEB-INF/spring/appServlet
파일안에 servlet-context.xml 에서 트랙잭션 설정을 하면 된다.
제약조건에 걸리게 되면(오류가 나면) 트랙잭션이 롤백되면서 데이터베이스가 업데이트 되지 않는다.
===============================================================================================
TransactionTemplate 은 위에 사용한 PlatformTransactionManager 인터페이스보다 더욱 많이 사용되는 TransactionTemplate 이다. 많이 사용된다는 것은 기존의 방법보다 개발자의 수고가 덜 할 수 있다는 의미이다.
servlet-context.xml에서
위와 같이 바꿔준다음
익명 클래스를 통해서 트랙잭션을 원하는 메소드를 안에 넣어준다.
Spring 프레임워크의 구성요소와 동작원리 (0) | 2018.08.11 |
---|---|
SpringFramework 트랜잭션 전파 속성 (0) | 2018.08.11 |
Springframework JDBC (0) | 2018.08.10 |
Spring framework Validator 검증 (0) | 2018.08.08 |
Spring framework GET/POST , 리다이렉트(redirect) (0) | 2018.08.07 |
Springframework에서 DB를 사용할 때 마다 JDBC 드라이버를 로드, 커넥션 생성, DB연결, SQL실행, 자원해제를 해야한다. 이렇게 반복적인 작업으로 코드의 중복이 많이 일어난다. 우리는 Spring 빈을 이용하여 코드를 간소화 할 수 있다.
프로젝트안에 pom.xml에서 <dependencies> </dependencies>안에
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
을 추가해준다. 이제 데이터베이스 설정이 완료되었다.
프로젝트 파일 src/main/webapp/WEB-INF/spring/appServlet/ 의 servlet-context.xml에서 <beans:beans>에
Controller 클래스안에 JdbcTemplate set해주고
Constant 클래스를 하나 만들어 JdbcTemplatae을 어디든지 사용할 수 있게 해준다.
그 뒤 Dao 클래스에서 Dao 클래스 생성자에 template = Constant.template을 해주어 template을 사용할 수 있게 한다.
이제 Dao 클래스에서 template을 사용하면 된다. Jdbctemplate의 CRUD는 다음에 포스팅하겠다.
SpringFramework 트랜잭션 전파 속성 (0) | 2018.08.11 |
---|---|
Springframework 트랜잭션 / TransactionTemplate (0) | 2018.08.10 |
Spring framework Validator 검증 (0) | 2018.08.08 |
Spring framework GET/POST , 리다이렉트(redirect) (0) | 2018.08.07 |
Spring framework form 간에 데이터 이동 (0) | 2018.08.07 |
자바 백준 1357번 뒤집힌 덧셈
입력 받은 X와 Y를 String으로 입력을 받은 뒤 for문으로 역순으로 바꿔준다. 그 뒤 Integer.parseInt를 사용하면 백의 자리가 0이거나, 백의 자리와 십의 자리가 0일 때 자동으로 0을 없애준다. 이를 이용해 풀면된다.
자바 백준 9375번 패션왕 신해빈 (0) | 2018.08.13 |
---|---|
자바 백준 7785번 회사에 있는 사람 (0) | 2018.08.11 |
자바 백준 2864번 5와 6의 차이 (0) | 2018.08.08 |
자바 백준 1652번 누울 자리를 찾아라 (0) | 2018.08.07 |
자바 백준 2869번 달팽이는 올라가고 싶다 (0) | 2018.08.05 |
자바 백준 2864번 5와 6의 차이
자바 백준 7785번 회사에 있는 사람 (0) | 2018.08.11 |
---|---|
자바 백준 1357번 뒤집힌 덧셈 (0) | 2018.08.10 |
자바 백준 1652번 누울 자리를 찾아라 (0) | 2018.08.07 |
자바 백준 2869번 달팽이는 올라가고 싶다 (0) | 2018.08.05 |
자바 백준 1075번 나누기 (0) | 2018.08.05 |