import java.util.*; class Marry implements Comparable<Marry>{ public int s; public int e; public Marry(int s, int e){ this.s = s; this.e = e; } @Override public int compareTo(Marry o){ if(this.s == o.s) return this.e - o.e; else return this.s - o.s; } } public class 결혼식 { public int solution(Marry[] slot, int n){ int answer = 1; PriorityQueue<Integer> Q = new PriorityQueue<>(); Q.offer(slot[0].e); for(int i = 1; i < n; i++){ while(Q.peek() <= slot[i].s) { Q.poll(); } Q.offer(slot[i].e); answer = Math.max(answer, Q.size()); } return answer; } public static void main(String[] args) { 결혼식 T = new 결혼식(); Scanner in = new Scanner(System.in); int n = in.nextInt(); // ArrayList<Marry> arr = new ArrayList<>(); Marry[] slots = new Marry[n]; for(int i = 0; i < n; i++){ int s = in.nextInt(); int e = in.nextInt(); slots[i] = new Marry(s, e); } Arrays.sort(slots); System.out.println(T.solution(slots, n)); } } 도착 시간이 현재 인덱스의 시작 시간보다 작거나 같을 때 해당하는 Q를 poll() 해주는 방식으로 처리했습니다. 사실 저는 PriorityQueue가 아니라 그냥 Queue로 풀었는데, 둘이 결과가 상이합니다. PriorityQueue로 풀었을 때는 정답 값이 나오는데 그냥 Queue로 풀었을 때는 틀린 값이 나옵니다. PriorityQueue는 우선순위 값을 먼저 반환한다는 차이가 있다는데, Queue를 사용해도 시작 시간 s 값이 같을 경우 e를 오름차순으로 설정해줬기 때문에 e가 작은 값부터 출력이 되어서 정답 값이 나와야 한다고 생각하는데 아니네요.. 계속 짱구를 굴려보는데 이유를 모르겠습니다... 긴글이지만 강사님 도와주십쇼! + 추가 ) Queue로는 해결이 안되었던 이유를 이제야 알 것 같습니다.. 피로연에 도착한 시간 s 값이 0일 때 나가는 시간 e가 76이라고 가정해보고, 다른 하객은 s 값이 75이고, 나가는 시간 e가 76일 때 Queue로 구현하여 FIFO 방식으로 처리하게 되면 도착 시간 s 를 오름차순으로 정렬하기 때문에 0 1 0 1 ... 0 76 과 같이 Q에 저장될 것이고 s = 76이 되었을 때 s = 0 , e = 76인 값만 데이터가 삭제되고, s = 75, e = 76인 값은 데이터가 삭제되지 않는 문제가 발생하게 됩니다. 하지만 PriorityQueue로 구현하게 되면 e 값이 76인 모든 데이터를 삭제할 수 있게 되므로 이러한 문제를 해결할 수 있게 됩니다. 혹시 맞나요..?
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
var 를 선언하게 되면 setter 를 사용한 것 처럼 외부에서도 클래스 내부 필드에 접근하게 되어 캡슐화가 되지 않아서 setter 를 막아주고 싶습니다. 만약 그렇게 하고싶다면 모든 필드에 private set 을 선언해야할 것 같은데 중복코드의 느낌도 있고, 코틀린의 간결함이랑 멀어진다는 생각이 들었습니다. 보통 실무에서는 도메인, jpa 엔티티를 분리하는 방법이 아닌 set 을 막으려면 어떻게 처리를 하는지 궁금합니다.
설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
안녕하세요. [FPGA 4장] Hello Matbi World (Vitis Tool 을 이용하여 PS 에 Program 해보기) - 실습편 강의를 수강 하면서 Vitis 진행 중 오류가 발생 하여 문의 드립니다. 강의 영상의 16:20 정도 부분을 진행 하다가, hello world 를 선택하고 나서 진행 하면 첨부한 사진과 같은 에러 창이 뜨면서 제대로 진행이 되지 않습니다. 해결 방법 알려주시면 감사합니다. Vitis Log 에서 에러 메시지 내용도 같이 첨부해 드리겠습니다.
안녕하세요. 강사님~! 여러 개념을 쉽게 설명해주셔서 재밌게 듣고 있습니다. ^^ 코드를 찾아보다 다음과 같은 케이스를 보았는데요. 저 방식을 제대로 해석한 것인지 질문드립니다. func main() { waitGroup := sync.WaitGroup{} waitGroup.Add(1) defer waitGroup.Done() // Goroutine 처리 waitGroup.Wait() } defer는 해당 함수가 비정상 종료 되었을 때도 수행한다. 내부 Goroutine에서 Done을 알리지 못했을 때도 Done 호출을 보장하기 때문에 자원 회수를 할 수 있다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 16:11 초에 보면 남성중에 0과 1 여성중에 0과 1 코드를 똑같이 쳤는데 0,0 으로 나옵니다 ㅜㅜ 조건을 따로 만들고 밑에서 & 연산자로 할때 한번씩 인식이 안되는 경우가 있던데 왜그러는 걸까요~?? 시험장에서도 이 부분때문에 고생한적이 있어서 쉬운거지만 질문드려보아요!! len(train[cond0&cond_male]), len(train[cond1&cond_male]) len(train[cond0 & cond_female]), len(train[cond1 & cond_female])
func receiveOnly(c <-chan int) { for i := range c { fmt.Println("received : ", i) } fmt.Println(<-c) } 저번 강의에서 range 키워드로 채널 종료 전까지 채널의 모든 데이터를 수신할 때까지 기다린다고 말씀해주셨는데, 한번 더 채널 수신을 하는 이유가 궁금합니다!
현재 무료강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 위 강의는 3월쯤 약 70%? 정도 수강했습니다. 그 후에 스프링부트 + JPA + Thymeleaf를 사용한 프로젝트를 하느라 강의를 더 못 들었는데요 아직 스프링에 대해 두루뭉실하게 알고 있는 것 같기도 하고, 강의를 통해서 좀 기반을 다잡고 싶어서 무조건 강사님 강의를 들으려고 합니다. 그런데 다만 제 기억으로는 무료강의 파트가 약간 "맛보기" 형식으로 쑥쑥 훑어 넘어가는 강의였던 것 같아요. (그래서 개인적으로 재미도 그닥 없었던....ㅠㅠ 생소한 거 투성이었다 해야하나..) 현재 제 수준이 어느정도인지 모르겠지만 바로 유료 강의인 스프링 핵심원리 - 기본편 으로 수강을 진행해도 될까요?
안녕하세요! 강의를 들으면서 정리하다가 질문이 생겨 글 올립니다. temp.js var a = 3; console.log(this); 위와 같이 코드를 작성하고 실행시켜 보면 사진과 같이 빈 객체가 나옵니다. 관련해서 다른 글들을 찾아보니, 노드에서는 전역 환경의 this만 global이 아니라 module.exports를 가리킨다 라는 글이 있었습니다. 왜 위와 같은 결과가 나오는지, 실제로 전역 환경의 this는 module.exports를 가리키는 건지 질문 드립니다!
안녕하세요 강사님~ 해당 문제를 처음 풀 때 애초에 구조체를 사용할 생각을 떠올리지 못 해서 구조체 없이 강사님 코드의 rotate90 메서드와 move메서드 아이디어만 활용해서 코드를 작성해보려고 했는데 막혔습니다 ㅜ 제가 생각한 접근법은 완탐으로 5번을 이동시킬 수 있는 모든 경우의 수를 체크해보려했습니다. 근데 기존 완탐 문제들과는 다르게 단순 visited = 0;하는 원복 패턴이 아니라 원복은 불가능해보이고, 원복없이 배열을 90도 회전 -> move(이동하기)까지 마치고 복사 배열을 다음 재귀함수에 넘겨주려고 했는데 그럼 move 메서드에서 배열을 변환 후 복사 배열을 리턴해줘야 되지 않나요? array는 리턴이 되는건지 검색해봐도 처음보는 코드들만 난무해서.. 강사님 코드는 애초에 구조체 내부 각 메서드 마지막에 memcpy를 사용하여 변환된 a 배열을 잘 보존시키는데 구조체 방식이 아니라면 이 문제를 해결할 방법이 없을까요? 이렇게 아예 접근조차 못 하는 문제들은 그냥 강사님 코드보며 외우고 넘어가야하는지 이러면 실력이 느는 것인지 고민되네요 ㅜ 마지막으로 해당 강의에서 move함수가 ⬆️(윗방향)으로 블록이동한다고 설명하시는데 코드는 ⬅️ 방향으로 블록이동인 것 같은데 제가 이해한 게 맞을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.