무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Do it! 알고리즘 코딩테스트 with JAVA
7강 1940 런타임 에러
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tk = new StringTokenizer(br.readLine()); int N = Integer.parseInt(tk.nextToken()); int M = Integer.parseInt(tk.nextToken()); int[] nums = new int[N + 1]; for (int i = 1; i < N + 1; i++) nums[i] = Integer.parseInt(tk.nextToken()); Arrays.sort(nums); int start = 1, end = N, answer = 0; while (start != end) { int sum = nums[start] + nums[end]; if (sum < M) start++; else if (sum > M) end--; else { answer++; start++; end--; } if (start > end) break; } System.out.println(answer); } }안녕하세요 ~항상 좋은 강의를 만드시기 위해 노력해주셔서 감사합니다!강사님의 강의를 참고해 위 코드로 재출을 했는데 인텔리제이에서는 정상적으로 실행되지만,백준에 재출했을 때 런타임 오류가 발생하는 이유를 모르겠어서 질문드립니다 ㅠㅠ오류 코드는 아래와 같습니다.Error: Main method not found in class Main, please define the main method as: public static void main(String[] args)제대로 main 객체와 메서드가 있는데 왜 인식을 못하는지 모르겠네요 ㅠㅠ감사합니다 :)
- 미해결Do it! 알고리즘 코딩테스트 with JAVA
첫번째 값으로 받는 길이값과 두번째 값으로 받는 값의 길이가 다를경우의 체크는 필요없나요?
안녕하세요 선생님해설 해주시기 전에 다음과 같이 구현하고 해설을 들었는데요, 첫번째 값의 길이값을 체크하는 로직이 없어도 되는지요? public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); String value = sc.next(); char[] valueArray = value.toCharArray(); int answer = 0; if (valueArray.length == num) { for(char charValue : valueArray) { int numValue = charValue - '0'; answer += numValue; } } System.out.println(answer);}
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
교재 227p 백준 1016번 질문드립니다.
저자 선생님 안녕하세요좋은 교재와 강의 잘 보고 있습니다.강의가 없는 1016번 문제에 대해 오래동안 고민을 해도 해결이 안되어 질문을 드리고 싶은데, 받아주시면 정말 감사하겠습니다.시간초과가 난 전체 코드입니다.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { InputStreamReader is = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(is); StringTokenizer st = new StringTokenizer(br.readLine()," "); long min = Long.parseLong(st.nextToken()); long max = Long.parseLong(st.nextToken()); // 최댓값과 최솟값의 차이만큼 배열 선언하기 boolean[] Check = new boolean[(int)(max-min+1)]; // 2의 제곱수인 4부터 Max보다 작거나 같은 값까지 반복하기 /* 저자님 코드(정답) for(long i=2; i*i<=max; i++){ long pow = i*i; //제곱수 long start_index = min/pow;//최솟값/제곱수 if(min%pow!=0){ start_index++; } for(long j = start_index; pow*j <=max; j++){//제곱수를 true로 변경하기 Check[(int)((j*pow)-min)] = true; } } */ //제 코드(시간초과) for(long i=2; i*i<=max; i++){ long pow = i*i;//제곱수 for(long j=1; (j*pow)<=max; j++){ long t= j*pow;//제곱수의 배수 if((min<=t) && (t<=max)){//제곱수의 배수가 min과 max 범위 안이면 Check[(int)(t-min)] = true; //제곱수의 배수 표시 } } } // long count = 0; for(long i = 0; i<=max-min; i++){ if(!Check[(int)i]){ count++; } } System.out.println(count); } } 위의 전체 코드에서 저자 선생님 코드를 주석 /* */ 로 감싸고제 코드를 바로 아래에 작성했는데, 보시기 힘들 것 같아서 보라색과 초록색으로 구분한 스크린샷을 같이 올려드립니다.제 코드의 경우, 백준 문제에서 보여준 테스트케이스는 통과하는데시간초과가 발생했습니다.그래서 많은 테스트케이스를 시도해봤는데입력1000000000000 1000001000000이 테스트케이스에서저자 선생님 코드는 제대로 작동을 하고, 제 코드는 시간초과가 발생하는 것 같았습니다.하루종일 고민해도 그 이유가 도저히 이해가 안돼서, 질문을 드리고 싶습니다.가르쳐주시면 정말 감사하겠습니다.읽어주셔서 감사합니다. +오후 8시에 질문을 추가드립니다.시간초과가 안나는 핵심 로직이 long start_index = min/pow;//최솟값/제곱수 if(min%pow!=0){ start_index++; }같은데 이 부분이 이해가 너무 어렵습니다..이 코드를 더 자세하게 가르쳐주시면 감사하겠습니다.
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
집합 표현하기(백준 1717) union 함수 질문
안녕하세요 강의 잘 보고 있습니다.강의를 보다가 질문이 생겨 질문드립니다.강의 영상에서 union 함수에서 a,b의 크기와 상관없이 a와 b가 다르다면 parent[b] = a; 라고하시는데이렇게 해도 되는 이유가 어차피 나중에 find 함수의 재귀함수부분 return parent[a] = find(parent[a]); 에서 경로 압축이 되기 때문에 크기 상관없이 parent[b] = a; 선언 해주신 건가요?
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
평균 구하기 (백준 1546) 질문
System.out.println(sum*100.0/max/N);강의에서는 이렇게 출력하는데 System.out.println(sum/max*100.0/N);이렇게 /max 와 *100.0 의 위치를 바꾸게 되면출력값이 다르게 나와요! 문제에서 점수/M*100그러니까 점수를 최댓값으로 나누고 100을 곱한다고 되어 있는데 순서에 따라 출력값이 다른 거면 다르게 풀어야되지 않을까요??
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
퀵정렬 설명시 오류
퀵 정렬을 설명할 때 start와 end가 만나면 swap이 아니라 start와 end값을 비교해서 적정 위치에 넣어주는것 아니었나요?
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
[그래프의 표현 실전 문제] 이분 그래프 판별하기(백준 1707) 코드 오류
강사님 항상 유익한 수업 잘 듣고 있습니다! 무료로 강의를 열어주셔서 정말 감사드립니다.[그래프의 표현 실전 문제] 이분 그래프 판별하기(백준 1707) 강의에서 38번째 라인 코드를 'DFS(1)'에서 'DFS(i)'로 수정이 필요해 보입니다.
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
시간복잡도 강의 질문
시간복잡도 강의에서 n이 100만일 때를 가정해서 설명해주셨고, 상수는 무시한다라는 걸 확인했습니다. 만약, 0부터 n까지 도는 for문 하나가 100만개 있다고 가정하면, 이것 또한 상수를 무시해서 Big-O 표기법으로 O(N)이 되나요? 아니면 N * N이 되므로 O(N^2)이 되나요?
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
영상과 제목이 일치하지 않습니다.
안녕하세요. 하루코딩님강의제목과 영상 내용이 일치하지 않아 게시글 남깁니다.[구간 합 실전 문제] 연속된 자연수의 합 구하기 (백준 2018)[투포인터 실전 문제] 연속된 자연수의 합 구하기 (백준 2018)로 변경되어야 할거 같습니다.^^ 감사합니다.
- 해결됨Do it! 알고리즘 코딩테스트 with JAVA
리스트 질문
안녕하세요. 하루코딩님여기서 설명하시는 리스트는 Java의 LinkedList로 이해하면 될까요? 감사합니다.