n = int(input()) n_list = [list(map(int, input().split())) for _ in range(n)] n_list.sort(key=lambda x: (x[1], x[0])) cnt = 1 cur = n_list[0][1] for i in range(n): if cur <= n_list[i][0]: cur = n_list[i][1] cnt += 1 print(cnt) 위 코드로 강사님이 제시해주신 케이스는 다 통과하는데, 동일한 문제임에도 백준 1931번은 틀렸습니다로 출력됩니다. cnt=0, cur=0으로 고쳐서 해결하긴 했는데, 첫번째 회의는 무조건 회의실에 배정된다고 생각하는게 왜 틀린 생각인지 모르겠어서 질문 드리게 되었습니다. 감사합니다!
안녕하세요 선생님. 항상 강의 잘 듣고 있습니다. 제가 작성한 코드가 37%에서 막히는데 왜 틀린 건지 잘 모르겠습니다. 고민하다가 해설 강의를 봤고 해설 강의 코드가 효율적이고 정확하다는 것을 이해했습니다. 다만, 제 코드가 비효율적이긴 해도 왜 틀렸는지 알고 싶습니다. https://www.acmicpc.net/source/66267875 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/67fc25f9921f4194b579af1bdfb7a353 안녕하세요 선생님, 왜 정답코드와 다르게 if의 순서를 바꾸면 틀렸다고 나오는지 궁금해서 여쭤봅니다. 감사합니다.
function solution(n, m) { const answer = []; const DFS = (num, combination) => { if (combination.length === m) { answer.push(combination.slice()); return; } if (num > n) return; DFS(num + 1, [...combination, num]); DFS(num + 1, [...combination]); }; DFS(1, []); return answer; } console.log(solution(4, 2)); 이전에 배웠던 방식처럼 해당 수를 포함하는 경우와 포함하지 않는 경우로 DFS를 호출하고 combination 배열이 길이가 m이면 answer에 push하도록 했습니다. 이 방식으로 풀어도 정답 코드와 성능이 크게 다르지 않을까요?
안녕하세요 선생님. 풀이를 보지 않고 단순히 브루트포스로 전체를 돌려서 구현해보았습니다. 저는 일단 조합으로 3개를 뽑는 3중 for문을 돌려서 꽃을 심을 수 있는 3 지점의 좌표를 구하고, 그 후 해당 좌표들을 상하좌우로 퍼트려 서로 겹치는지와 화단 범위를 벗어나는지를 체크하여 문제없이 3개가 심어진다면 해당 부분들의 가격을 더해서 값을 구하는 식으로 로직을 짰습니다. 하지만 예제는 맞는데 제출하면 2%에서 틀린다고 나옵니다. 틀리는 부분을 찾지 못하여 질문드립니다. http://boj.kr/cc392b4733d94aa9a3f67b831d041932
https://postfiles.pstatic.net/MjAyMTA1MTNfNzIg/MDAxNjIwODgyMDkwMTI3._oXnW6b77oEMkcdomjgB8NMLStKeMWOmLgQl1rrNGHQg.ZGawtod2AJSOLywq734qeiWpcteLFDIEhcJ438xtc44g.JPEG.jhc9639/%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C132.JPG?type=w966 영화수집 # 문제해석이 이해가 가지 않습니다. 왼쪽에 3 Block이 하나 있고 2 Block이 3 두개 쌓아져 있습니다. 좌우 빨간 화살표가 의미하는 것과 오른쪽에 그림을 조금 더 상세히 설명해주실 수 있을까요..? 트리라는 것은 알겠는데, 작동하는게 이해가되지 않네요. 추가로 좌표 이동의 의미도 한번 더 설명부탁드리겠습니다. 감사합니다.
https://blog.naver.com/jhc9639 2~8 까지의 최소 인덱스를 계산 하는 예제가 이해되지 않습니다. 여기서 두번째부터 여덟번째까지 인덱스 중에 최소 값을 가지는 인덱스를 찾는 문제인건가요? 그렇다면 여덟번째 인덱스가 없어서 의하하구요. 두 번째로, 세번째, 4번째, 6번째 인덱스만 비교한다는 것이 이해되지 않습니다. 부연: 아래 설명에 0~3까지의 요소값에서 level2에서 한번에 찾을 수 있다는 것은 이해가 됩니다. 왜냐면 level2 트리값이 이미 최소 인덱스를 들고 있기 때문입니다.
linked list를 사용해야 하는 경우가 언제일까요? 실제 사용하는 문제를 보고 싶습니다 제 생각에는 array list로 구현하고 visit같은 경우도 list slicing 후 +로 리스트를 합치면 N(1) 만에 가능하기 때문에 시간이 부족한 코테에서 언제 linked list가 꼭 필요할까 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~ 제가 문제의 요지를 잘 파악 못해서 그런거 같은데 break를 하는 이유가 뭔지 잘 이해가 안됩니다. 7:50부분 저같은 경우는 2학년(k)때 3번학생(j)과 4번학생(i)이 같고 3학년(k)때도 3번학생(j)과 4번학생(i)이 같은 경우를 카운팅 했었는데요 break를 해야 한다는걸 문제의 어떤 줄을 보고 바로 깨달을 수 있을까요? 같았던 횟수를 구하는게 아니고, 같았던 학생의 명수를 구하는거라서 한번 같았으면 break하는거라고 이해하면 되는게 맞을까요? 다시 말해서, i와 j가 고정된 상태에서 k를 순회하는 중에 한번이라도 같으면 break를 하면 되는건가요? -- 그리고 추가 질문으로 if ( i != j )를 안해도 된다고 하셨는데, 이 조건문을 추가함으로써 순회하는 과정을 일부 제외해서 성능이 더 좋아지지 않을까 생각해보는데 이런 생각도 맞는지 궁금합니다! 이미 for문의 조건문으로 설정된 부분이라 if문을 걸어도 시간복잡도에 영향은 없나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의를 듣기전에 풀었는데, 3개는 맞는데, 정확도가 떨어지는 코드라고 나와서 왜 해당 코드가 오답케이스가 있는지 잘 모르겠습니다 ㅠㅠ 혹시 어디가 잘못된건지 여쭤봐도 될까요? package Array.임시반장_정하기; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public int solution(int n, int[][] arr) { int answer = 0; Set<Integer> duplicates = new HashSet<>(); for (int i = 0; i < 5; i++) { for (int j = 0; j < n; j++) { int duplicate = arr[j][i]; for (int k = 0; k < n; k++) { if (duplicate == arr[k][i] && j != k) { duplicates.add(arr[k][i]); } } } } if (duplicates.isEmpty()) return answer+1; for (int i = 0; i < n; i++) { int count = 0; for (int j = 0; j < 5; j++) { for (int x:duplicates) { if (x == arr[i][j]) count ++; } if (count == duplicates.size()) { answer = i; break; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][5]; for (int i = 0; i < n ; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(T.solution(n,arr)); } }
안녕하세요 큰돌님 곧 있으면 공채 코테 기간이라 많은 준비를 하고 있습니다! 다름이 아니라 다익스트라 알고리즘이라는 것이 가끔 코테에 나온다고 들었습니다. 제가 지금 시간이 없어서 코테 시험 기간까지는 모든 문제를 풀진 못 할 거 같습니다.. 우선적인 것들 다시 풀어보고가야할 것 같은데 혹시 다익스트라 알고리즘이 배우고 가야 할만큼 자주 나오는 유형인가요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의듣기 전에 풀이해본 내용인데요! 관련해서 질문이 있습니다! 아래 코드 처럼 풀었는데, 경계값을 해주는걸 solution 내부 함수에서 해주는게 아니고, 입력값에서 배열 사이즈 조정하는걸로 풀면 다른 활용문제에서 어떤 문제가 발생할지 궁금합니다! 저는 행, 열에 각각 +1, -1 해주면서 찾았는데, 이렇게 하면 강의에서 말씀하신 대각선 값 비교할때 문제가 있을까요? 대각선의 경우 분기처리할때 각행과 열에 (-1, +1 ) (-1, -1) (+1, +1), (+1, -1)추가해서 체크해주는게 다른 활용 문제에서 어떤 문제가 발생할지 궁금합니다! 문제는 없지만 비효율적이고 가독성이 안좋아서 그런걸까요? 3중 포문으로 하면 시간복잡도가 O(n^3)가 되서 성능이 떨어지는거 아닌지 궁금합니다. 아래 코드로 하면 O(n^2)이라서 더 빠를 것 같았는데 강의로 알려주신 코드보다 12ms 더 느리더라구요! import java.util.Scanner; public class Main { public int solution(int n, int[][] arr){ int answer = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int tmp = arr[i][j]; // 첫째줄 조건은 열 체크. 둘째줄 조건은 행 체크 if (tmp > arr[i][j+1] && tmp > arr[i][j-1] && tmp > arr[i+1][j] && tmp > arr[i-1][j]) { answer ++; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n+2][n+2]; for (int i = 1; i <= n ; i++) { for (int j = 1; j <= n; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(T.solution(n,arr)); } }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/d466b4cc3d3048f990700e44cfc1de54 처음엔 위 링크와 같이 map으로 풀었는데 계속 시간 초과가 나더라구요... 예시 코드와 어느 부분에서 시간 차이가 나는 걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 큰돌 강사님, 아무리 생각해도 이 코드가 틀린 이유를 모르겠어서 질문하게 되었습니다. http://boj.kr/cfc58ee8fdc94e93a5b6ce83a2221a2b split함수로 "pi","ka","chu" 모두 없애고, str.length 비교로 정답 유무 확인할 수 있는거 아닌가요? 예시 코드는 전부 다 맞는데, 히든 케이스가 문제같아요. 어떤 예외처리를 못한걸까요??