안녕하세요, 강의 잘 듣고 있습니다. 작성한 코드 실행 시 테스트 케이스 4번에서만 오답처리 되어 확인을 해봤습니다. 4번째 테스트 케이스인 9, [3 6 13 11 7 16 34 23 12] 를 입력한 후 디버깅을 해본 결과 실제로 중복집합이 발생하는 것으로 확인됐습니다. 제 코드 상에 어떤 부분이 문제가 됐는지 알고 싶습니다. import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { static int level; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int size = sc.nextInt(); int max = 0; int dep[] = new int[size + 1]; level = size; for (int i = 1; i < dep.length; i++) { int val = sc.nextInt(); dep[i] = val; if (val > max) { max = val; } } int[] check = new int[max + 1]; Map<Integer, Integer> map = new HashMap<>(); dfs(1, check, dep, map); Collection<Integer> values = map.values(); boolean duplicate = false; for (int i : values) { if (i != 1) { System.out.println("YES"); duplicate = true; break; } } if (!duplicate) { System.out.println("NO"); } } public static void dfs(int l, int check[], int[] depth, Map<Integer, Integer> map) { if (l == level + 1) { int sum = 0; for (int i = 1; i < check.length; i++) { if (check[i] == 1) { sum += i; } } if (sum > 0) { map.put(sum, map.getOrDefault(sum, 0) + 1); System.out.println("Sum: " + sum + ", Count: " + map.get(sum)); } } else { check[depth[l]] = 1; dfs(l + 1, check, depth, map); check[depth[l]] = 0; dfs(l + 1, check, depth, map); } } }
안녕하세요. Set관련 2가지 질문드립니다. 1. 문제풀이에서 보면 Set의 내용을 출력할 때 for-each문으로 Set의 내용을 출력하였는데, 기본적인 인덱스 접근은 아닐텐데 어떻게 for-each문으로 값을 찾아서 출력이 가능한 걸까요 ? (강의에 나온대로 hashIndex를 활용한 접근이라면 어느 index에 매핑될 지 모르니 내부에 가지고 있는 배열의 capacity만큼 다 돌아야 할 거 같아서요. 그렇다면 배열의 capacity는 default인지 아닐지 모르는데 이걸 일일히 확인하고 for문을 돌린다는 것도 이상하고요.) LinkedList 때도 문의 드린 건데 Set도 보면 toString을 따로 구현체들이 오버라이딩 하고 있지 않고 set.toString()을 찍어봐도 object에서 선언한 toString()을 가리키던데 어떻게 다음과 같이 출력이 될까요 ? System.out.println(set); [20, 10, 30] 아래 질문헀던 건데 답변을 못 받아서 재질문드립니다. HashSet의 toString 코드를 보다 문의사항이 있어 질문합니다. @Override public String toString() { return "MyHashSetV2{" + "buckets=" + Arrays.toString(buckets) + ", size=" + size + ", capacity=" + capacity + '}'; } 다음과 같이 되어 있고 출력을 MyHashSetV2{buckets=[[Member{id='hi'}, Member{id='JPA'}], [], [], [], [], [], [Member{id='spring'}], [], [], [Member{id='java'}]], size=4, capacity=10} 이렇게 하니까 Arrays.toString(buckets) 부분이 [[Member{id='hi'}, Member{id='JPA'}], [], [], [], [], [], [Member{id='spring'}], [], [], [Member{id='java'}]] 이 부분일텐데 따라 들어가면 toString 오버라이딩 된 형태가 toString(Object[] a) { 다음과 같고 실제 스트링으로 만드는 코드는 StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0; ; i++) { b.append(String.valueOf(a[i])); 이거인데요. 여기서 말하는 a[i]는 LinkedList<Object>[] set의 각각의 인덱스에 위치한 LinkedList<Object> 일텐데 LinkedList나 상위의 List를 타고 들어가봐도 따로 toString 메서드를 살펴볼 수 없습니다. String.valueOf(LinkedList)가 어떻게 동작하는건가요 ? 출력물 보면 각 LinkedList안에 객체로 들어간 member의 toString을 출력하는 거 같기는 한데 LinkedList를 순차척으로 도는 코드를 확인 못하겠습니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/) [질문 내용] 여기에 질문 내용을 남겨주세요. java-start 파일 선택후 project location 칸에 ~\Java\java-start 로 지정되어 있는데 이대로 하면 다음 에러가 뜹니다 Directory 'C:/Users/yeon/Java/java-start' is already taken by the project 'java-start'. Please choose another location 선생님과 같이 한 것 같은데 왜 이렇게 뜰까요? 그래서 상위폴더인 Java를 선택했는데 인텔리제이에서 프로젝트를 못 찾겠습니다. 수업에서 Java-start > src 누르면 쭉 뜨는데 Main 밖에 안 뜹니다. 코드를 어떻게 찾을 수 있나요??
제 2정규형을 보다 보니 질문이 생겼습니다. 아이폰 제품에 대한 데이터베이스를 만들 때 예를 들어 아래와 같이 9가지 정보만 간단히 표기하고 싶을 때 하나의 테이블에 다 넣는 것이 아니라 <I Phone 제품 테이블> -모델명 -용량 -출시일 -OS 정보 -색상 -RAM -카메라 -칩 -시리얼 넘버 이런식으로 해야하는건가요? <I Phone 제품 테이블> -모델명 -용량 -출시일 -OS 정보 -색상 -RAM -카메라 -칩 -시리얼 넘버 <모델명 테이블> -모델명 -용량 -출시일 -색상 <RAM 테이블> -RAM 종류 <카메라 테이블> -카메라 종류 <칩 테이블> -칩 종류 <OS 테이블> -OS 종류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
강의중에 언급하신 아날로그 신호, 디지털 신호, 아날로그 데이터, 디지털 데이터 용어가 서로 햇갈려서 글 남겨드립니다. 그리고 제가 재대로 정확하게 알고있는지 궁금하여 글 몇개 남겨드립니다. Q1. 먼저 해당용어가 먼저 나온건 1계층을 설명해주셧을때 나왓는데요 1계층 즉, 물리계층은 이전 계층들에서 계속 쌓여온 헤더와 데이터가 모여서 최종적으로 구성된 "프레임" 이라는 데이터를 물리적인 전기신호로 바꿔서 전송하는 역할로 알고있습니다. 해당 내용이 제가 알고있는 물리계층에 역할이 맞는지 궁금합니다 Q2. 데이터링크와 물리계층 강의에서 전기신호, 전자기파, 아날로그 신호에 대해서 설명을 해주셧는데요 아날로그 신호란 전기신호, 전자기파 같은 물리적인 신호라고 하였고 물리계층은 디지털신호를 아날로그 신호로 바꾸고 목적지까지 전달한다고 하였습니다. 그럼 여기서 말하는 디지털 신호는 "프레임"을 말하는것이며,아날로그 신호는 "프레임"이라는 데이터를 전기신호로 바꾼 것을 말하는 걸까요? Q3. 랜카드는 물리계층에 역할을 같이 하기도 한다고햇는데 랜카드는 디지털데이터를 아날로그 데이터로 바꾸기도 하고 아날로그 데이터를 디지털데이터로 바꾸기도 한다는데 이 행위가 물리계층에과 같은 역할을 하는건가요? 그리고 여기서 말하는 디지털 데이터와 아날로그 데이터들이 위에서 언급한 아날로그 신호와 전기신호 인지 궁금합니다 신호와 데이터간에 단어 혼동이 와서 글 남겨드립니다.
안녕하세요! 강사님 이번 프로젝트에서 더 나아가 rpg 연습 프로젝트를 하는 도중 인벤토리 구현을 하는데 있어서 궁금한 것이 있어 질문 남깁니다. 아래처럼 슬롯 UI를 구현해서 이제 Clear일때는 text,와 image를 지워주고 update에는 또 새로운 값을 대입해주거나 해야하는데 그때마다 Get~= null, Get~= stack++;이런식으로 해주어야하는건가요? 클래스 멤버변수로 Text stackText 를 하나 선언해서 Init할때 stackText = Get~ 이런식으로 받아놓고 사용하면되는걸까요? 다루어야할 데이터가 늘어나면 enum형에 있는만큼 더생기니까 뭔가 바인딩하려고 enum형에 다 선언을 해놨는데 변수를 하나 더 만드는 거 같아 이런식으로 사용하는게 맞는지 모르겟습니다. 머리를 굴려서 생각해본 결과 SetInfo를 값을 변화시켜야할때마다 호출하는 방식으로 해놓긴했습니다ㅠㅠ using System.Collections; using System.Collections.Generic; using TMPro; using UI; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; public class UI_InvenItemSlot : UI_Base { enum Images { ItemImage } enum Texts { ItemStackText } void Start() { Init(); } public override void Init() { Bind<GameObject>(typeof(Texts)); Bind<GameObject>(typeof(Images)); //클릭했을 때, 장착 바뀌기 이런 이벤트 함수 만들어서 연결 } private void OnClickSlot() { } private void ClearSlot() { // image =null //itemstacktext= null } private void UpdateStackText() { } private void SetInfo(Sprite image, int stackCnt) { GetText((int)Texts.ItemStackText).text = stackCnt.ToString(); GetImage((int)Images.ItemImage).sprite = image; } //슬롯 인덱스 // 슬롯 아이템 보유 여부 // 슬롯 접근 가능 여부 -> 다른 종류 아이템이거나 꽉찼으면 접근 X // 아이템 이미지 // 수량 텍스트 //기능 // 아이템 이미지 변경/ 보이기/ 숨기기 // 수량 텍스트 변경/보이기/숨기기 // 슬롯 접근가능 여부 변경 }
안녕하세요. 현재 Rest Api로 백엔드 개발을 하고, View는 Html thymeleaf를 이용해 구현을 하려고 합니다. 리액트 등의 프레임워크를 사용하지 않는다면, @GetMapping으로 View단을 불러올 때, @RestController가 아닌 @Controller에서 불러와야하는데 그렇다면 @RestController와 @Controller 둘 다 따로 만들어야 하는지 궁금합니다. 예를 들어, 공지사항 전체 조회의 @RestController의 코드가 // // 공지사항 전체 조회 // @GetMapping("/ypjs/board/notice/notices") // public Result findAll(@RequestParam int offset, @RequestParam int limit) { // List<Notice> noticeList = noticeService.findAll(offset,limit); // List<NoticeDto.NoticeApiDto> result = noticeList.stream() // .map(n -> new NoticeDto.NoticeApiDto(n.getNoticeId(), n.getNoticeTitle(), n.getNoticeContent(), // n.getNoticeCnt(), n.getNoticeDate(), n.getMember().getNickname())) // .collect(Collectors.toList()); // return new Result(result); // } 라면, 공지사항 전체 조회의 @Controller의 코드는 이렇게 구현하면 되는건가요? + 만약 이게 맞다면 @RestController의 GetMapping URL과 @Controller의 GetMapping URL이 겹치면 실행이 안되므로, @RestController의 URL을 /api/ypjs/board/notice/notices로 변경하면 될까요? 그렇다면, 제 프로젝트에서 @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 남겨놔도 되는건지 궁금합니다.. 그리고 View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 쓰이는 방법인지가 궁금합니다. ---------------------------------------------------------------------------------------------------------------- (질문 요약) 1. 리액트 같은 프레임워크 없이 프로젝트를 Rest Api로 개발할 때, 화면만을 위한 @Controller 클래스를 따로 만들어도 되나요? 만약 이 경우에 GetMapping URL이 겹치면 안되니까 @RestController의 URL엔 /api/를 추가해서 겹치지 않게 하는 식으로 하나요? 2. 다른 부분은 rest api로 개발하고, View 연결만을 위한 @Controller 클래스를 따로 만드는 것이 현업에서도 많이 사용하는 방법인가요? 3. 만약 화면을 위해 @Controller 클래스를 만드는게 좋은 방법이라면, @RestController의 @GetMapping 코드는 더 이상 쓰지 않는 코드가 되는 것인데, 활용할 방법이 있을까요? + 남겨놔도 되는건가요? 화면을 따로 개발하는 것이 아니라, 저처럼 같이 개발하는 경우 Rest api 개발을 하는것이 의미가 있는지 궁금합니다. Rest api 개발을 경험해보고 연습해보고싶어 백엔드단을 Rest api로 먼저 개발해서 완성하고, 프론트엔드는 프레임워크를 다루지 못해 html을 이용해 화면을 만들고 연결하는 식으로 했다!는 것이 Rest api로 프로젝트를 만드는 것에 대한 충분한 설명이 될 수 있을까요?
안녕하세요. 1인 광고대행사를 운영하고 있습니다. 광고 이미지에 쓸 한국 여성 이미지를 만들려고 하는데요. 어떤 프롬프트를 넣든 전신 이미지는 나오지 않고 상반신 이미지만 만들어줍니다. 1) 어떤 프롬프트를 넣어야 전신샷을 만들어줄까요? 2) 상반신 이미지를 만들어줄 때 머리카락이나 어깨부분이 잘려서 나옵니다. 이 때도 어떤 프롬프트를 넣어야 여성 이미지가 신체 일부분이 잘리지 않고 이미지를 만들어줄까요?