일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- springbootH2
- 임베디드타입
- JPAmapping
- httppie
- 제이피큐엘쿼리
- JPAproxy
- Git
- Open EntityManager
- 데이터베이트h2
- 자바제너릭
- MySqlType
- springboot기본설정
- 스프링부트기본설정
- javageneric
- OSIV
- 스프링부트
- JPA값타입
- dockercmd
- 이해와 원리
- springbootproxy
- JPA Hint & Lock
- jpa
- JDBC connection pool
- gitinitial
- sql
- embededtype
- jpqlquery
- spring
- JPA프록시
- 에이치투데이터베이스
Archives
- Today
- Total
빡코
백준_1931번_회의실배정 본문
https://www.acmicpc.net/problem/1931
출력
첫째 줄에 최대 사용할 수 있는 회의 수를 출력하여라.
로직
첫번째시도!
--왜 HashMap을 선택했는가? 다른 대안은 없는가?
HashMap을 이용해서 값을 입력하고 아래의 두 가지 Print 방법으로 출력을 한다.
Map<Integer,Integer> start_end = new HashMap<>();
start_end.put(1, 12); //예제값 입력
//방법1
Set<Map.Entry<Integer, Integer>> entries = start_end.entrySet();
for(Map.Entry<Integer, Integer> entry : entries) {
System.out.print("key: "+ entry.getKey());
System.out.println(", Value: "+ entry.getValue());
}
//방법2(람다식)
start_end.forEach((key,value) ->{
System.out.print("key: "+key);
System.out.println(",value: " +value);
});
HashMap은 key 값이 중복될 경우 value 값이 오버랩되기 때문에 로직을 사용할 수 없음 .
두번째시도!!
public class No_1931 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //N개의 회의 입력
ArrayList<Start_end> str_end = new ArrayList<Start_end>();
for(int i =0;i<n;i++) {
int start_time= sc.nextInt();
int end_time = sc.nextInt();
str_end.add(new Start_end(start_time, end_time));
}
//입력된 starttime & endtime 출력
System.out.println(str_end.size());
for(Start_end num: str_end) {
System.out.println(num.start_time+" "+num.end_time);
}
//오름차순 정렬 완료
str_end.sort(new Comparator<Start_end>() {
@Override
public int compare(Start_end e_time0, Start_end e_time1) {
// TODO Auto-generated method stub
int e_time01 =e_time0.getEnd_time();
int e_time11 =e_time1.getEnd_time();
if(e_time01 == e_time11)
return 0;
else if(e_time01> e_time11)
return 1;
else
return -1;
}
});
System.out.println("오름차순 정렬");
for(int i=0;i<str_end.size();i++) {
System.out.println(str_end.get(i).start_time +" "+str_end.get(i).end_time);
}
int count =1;
for(int i=0;i<str_end.size();i++) {
for(int j=i+1;j<str_end.size();j++) {
if(str_end.get(i).end_time<=str_end.get(j).start_time) {
//System.out.println("str_end.get(i).end_time: "+str_end.get(i).end_time +" str_end.get(j).start_time: "+str_end.get(j).start_time);
//i값을 초기화
//i <= 새로 시작하는 endtime의 값이
i=j;
i--;
count++;
break;
}
}
}
System.out.println(count);
}
}
//시작 끝시간 DTO
class Start_end{
int start_time;
int end_time;
public Start_end(int start_time, int end_time) {
this.end_time = end_time;
this.start_time = start_time;
}
public int getStart_time() {
return start_time;
}
public void setStart_time(int start_time) {
this.start_time = start_time;
}
public int getEnd_time() {
return end_time;
}
public void setEnd_time(int end_time) {
this.end_time = end_time;
}
}
콘솔결과값
'Algorithm' 카테고리의 다른 글
백준_11399번_ATM (0) | 2020.01.15 |
---|---|
[과제]프로그래머스_두 정수 사이의 합 (0) | 2020.01.02 |
[과제] 설명 준비해오기1 (0) | 2020.01.02 |
[ 과제]백준_ 11047번_동전0 (0) | 2020.01.02 |
[과제]백준_ 10872번 _팩토리얼 (0) | 2020.01.02 |