월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제 출제의도 질문
안녕하세요 강사님 강의를 보다 궁금한 점이 생겨서 글을 남깁니다. 저는 해당 문제를 먼저 풀면서 (해쉬)라는 키워드를 놓치고 문제를 풀게 되었습니다. 그래서 방식을 char 두개의 배열을 모두 정렬시키고 배열을 순회하며 같은 인덱스의 문자열이 같은지 비교해서 하나라도 일치 하지 않다면 NO를 리턴하고, 전부가 같다면 YES를 리턴하는 함수를 만들어서 문제를 풀었습니다. 여기서 질문은 정렬이 들어가면서 시간 복잡도가 nlogn으로 늘어나긴 했지만 시간 제한 안에는 문제가 풀렸습니다. 그런데 해당 문제가 코테에 나오게 된다면 문제 출제 의도를 무조건 '해쉬'로만 봐야 할까요 ? 채점자에 따라 다르겠지만 통상적으로 어떤 시선으로 바라보게 되는지가 궁금합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
toString과 String,valueOf
public String solution(String str) { String answer; char[] s = str.toCharArray(); int lt = 0, rt = s.length - 1; while (lt < rt) { if (!Character.isAlphabetic(s[lt])) lt++; else if (!Character.isAlphabetic(s[rt])) rt--; else { char tmp = s[lt]; s[lt] = s[rt]; s[rt] = tmp; lt++; rt--; } } answer = String.valueOf(s); //answer=s.toString(); return answer; } 위의 코드에서 answer = String.valueOf(s)와 주석처리한 answer=s.toString이 어떤 차이점이 있을까요?? 두 코드 다 s를 스트링으로 바꿔서 answer에 넣어주는거라 생각했는데 주석처리한 코드로 제출하면 오답이라도 나오네요
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
그리디 알고리즘 씨름선수 조건을 만들어야하지 않을까요?
예를들어 테스트 케이스에서 183 65 180 70 180 66 이렇게 있다면 180 66은 선발이 돼야 합니다. 왜냐면 183 65보다 키 작지만 몸무게는 높고 180 70보다 몸무게는 낮지만 키는 같으니까 키와 몸무게 모두 A지원자 보다 높은(크고, 무겁다) 지원자가 존재하면 A지원자는 탈락하고, 그렇지 않으면 선발된다. 위 조건을 생각해보면 3명 모두 선발돼야 합니다. 하지만, 작성해주신 코드에는 maxW가 180 70에서 70으로 바뀌고, 그 후 180 66을 카운팅하지 않기 때문에 문제가 생깁니다. 그래서 같은 키를 가진 선수는 없다고 조건이 있어야 하거나, 밑 처럼 코드가 바뀌어야 한다고 생각합니다. ~~~java @Override public int compareTo(Body o) { if (o.h == this.h) return o.w - this.w; else return o.h - this.h; ~~~ 정렬 방식을 위 처럼 같은 키에서 무게를 내림차순 하고, 밑 처럼 같은 키일 때 최대 무게와 서로 키가 다를 때 최대 무게를 다르게 설정해야 한다고 생각합니다. ~~~java Player prev = new Player(0, 0); Player present = new Player(0, 0); for (int i = 0; i < N; i++) { if (present.k != arr[i].k) { prev.w = Math.max(prev.w, present.w); present.k = arr[i].k; present.w = arr[i].w; } if (prev.w < arr[i].w) { cnt++; } } ~~~
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 한번 검토 부탁드립니다^^
안녕하세요! 강의 보기 전에 다른 방식으로 풀어봤는데 코드 한번 리뷰 부탁드립니다 ㅎㅎ stringBulider의 reverse를 사용했는데 소요시간에 영향을 미치는지 궁금합니다! import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); String [] arrStr = new String[num]; for(int i =0;i<num;i++){ arrStr[i] = scanner.next(); } for(String s : arrStr){ int ans = check(reverse(s)); if(ans != 0){ System.out.print(ans + " "); } } } public static int reverse(String str){ str=new StringBuilder(str).reverse().toString(); return Integer.valueOf(str); } public static int check(int num){ if(num == 1) return 0; for (int i=2;i<num/2;i++){ if(num%i == 0){ return 0; } } return num; }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
run time error..
안녕하세요! 질문해주신 다른분들 코드를 봤는데 for문에서 i<num 그리고 j<num과 같이 작성하면 마지막 arr[num]값이 소수인지 체크가 불가능할거같은데 어떻게 생각하시나요?! (강의에서는 i<=n, j<=n과 같이 작성하셨습니다.) package Inflearn;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); System.out.println(solution(num)); } public static int solution(int num){ int [] arr = new int[num+1]; int ans = 0; for(int i=2;i<=num;i++){ if(arr[i] == 0){ ans++; for(int j=i; j<=num; j=j+i){ arr[j] = 1; } } } return ans; }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
숙제검사
안녕하세요 선생님. 숙제 코드 잘 작성됐는지 검토 부탁드립니다! import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 그래프 최단거리(BFS) level public class Example12 { static int n, m; static int[] answer; static ArrayList<ArrayList<Integer>> graph; static boolean[] visited; static public void bfs(int node) { Queue<Integer> queue = new LinkedList<>(); queue.offer(node); visited[node] = true; int level = 0; while(!queue.isEmpty()) { int length = queue.size(); for(int i=0; i<length; i++) { int v = queue.poll(); answer[v] = level; for(int x : graph.get(v)) { if(!visited[x]) { queue.offer(x); visited[x] = true; } } } level++; } } public static void main(String[] args) { Scanner scan = new Scanner(System.in); n = scan.nextInt(); m = scan.nextInt(); answer = new int[n+1]; visited = new boolean[n+1]; graph = new ArrayList<ArrayList<Integer>>(); for(int i=0; i<=n; i++) { graph.add(new ArrayList<Integer>()); } for(int i=0; i<m; i++) { int x = scan.nextInt(); int y = scan.nextInt(); graph.get(x).add(y); } bfs(1); for(int i=2; i<answer.length; i++) { System.out.println(i + " : " + answer[i]); } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
BFS로의 풀이에 대해 질문드리고 싶습니다.
안녕하세요 강사님, 강의를 듣다가 동전 문제를 BFS로 풀 수 있을거 같아 이렇게 풀었는데, 괜찮은 코드인지 여쭤보고 싶습니다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static int N, M, count; static int[] arr; static Queue<Integer> queue = new LinkedList<>(); public void input() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); arr = new int[N]; st = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(st.nextToken()); queue.offer(arr[i]); } st = new StringTokenizer(br.readLine()); M = Integer.parseInt(st.nextToken()); } public int BFS() { while (!queue.isEmpty()) { count++; int len = queue.size(); for (int i = 0; i < len; i++) { int value = queue.poll(); for (int X : arr) { int data = value + X; if (data == M) return count+1; // 동전의 값을 Queue에 삽입 전에 체크하기 때문에 +1를 추가해서 리턴 if (data < M) queue.offer(data); } } } return count; } public static void main(String[] args) throws Exception { Main main = new Main(); main.input(); System.out.println(main.BFS()); }}
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
데이터량이 적어서인지 무식하게 풀었는데도 답을 구했네요.
import java.util.Arrays; import java.util.Scanner; public class Main { static int n ; public static void main(String[] args) { Scanner in = new Scanner(System.in); Main T = new Main(); n = in.nextInt(); int[] arr = new int[73] ; for(int i=0 ; i< n;i++){ int s = in.nextInt(); int e = in.nextInt(); for(int j= s; j<e ; j++){ arr[j]++; } } System.out.println(Arrays.stream(arr).max().getAsInt()); } } 시간 범위가 0~72 정도여서 72 정도 크기의 배열에 넣고 참석하는 시간 범위동안 1을 더해주는 방식으로 구현하였는데 시간 제한에 걸리지 않고 잘 동작하게 되네요. 물론 시간 범위가 좀더 큰 경우라면 강사님의 풀이대로 풀어야 정확한 답을 구할 수 있을 거라고 생각됩니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님이 맨 앞에 있다고해서 max 초기값을 0으로 설정하고 진행했는데 잘 이해한걸까요....?
public class Main { public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); } System.out.println(T.solution(arr)); } public int solution(int[] arr) { int count = 0; int t = 0; for (int element : arr) { if (element > t) { count++; t = element; } } return count; }} 답은 잘 맞게 나왔는데.. 풀어주신 부분과 이해가 좀 다른것 같아서요. 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요
안녕하세요 선생님 강의 잘보고있습니다 제가 풀은 문제가 어느부분이 틀린지 모르겠어가지고요.. 정답은 정상적으로 나오는데 ㅇ오답처리가되서요ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드리뷰 요청 드려도 될까요?
import java.util.Scanner;public class Main { public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); int count = scanner.nextInt(); String input2 = scanner.next(); System.out.print(T.solution(count, input2)); } public String solution(int count, String str) { String answer = ""; StringBuilder temp = new StringBuilder(); int c = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '#') { temp.append(1); } else { temp.append(0); } c++; if (c == 7) { int codePoint = Integer.parseInt(temp.toString(), 2); String 해독한문자 = Character.toString((char) codePoint); answer += 해독한문자; temp = new StringBuilder(); c = 0; } } return answer; }} 풀다보니 같이 입력받은 숫자가 필요없어졌네요... 그래도 강사님 풀이가 훨 간단하네요..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어떻게 풀어야하는것인가요....?
어떻게 접근해야할 지 감도 오지 않는데... 이런 패턴을 외워둔다고 생각하고 풀면 될까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
LinkedHashSet 으로 풀어도 괜찮을까요?
HashSet으로만 풀었더니 순서를 요구해서 LinkedHashSet으로 풀었습니다. import java.util.LinkedHashSet;import java.util.Scanner;public class Main { public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); String input = scanner.next(); System.out.println(T.solution(input)); } public String solution(String str) { String answer = ""; char[] s = str.toCharArray(); LinkedHashSet<Character> set = new LinkedHashSet<>(); for (char c : s) { set.add(c); } for (Character character : set) { answer += character; } return answer; }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제처럼 N개의 단어가 들어온다면 배열이라고 생각하고 풀어도 될까요?
문제에는 프로그래머스 처럼 배열로 들어온다는 내용이 없었는데 풀이를 보니까 배열로 처음부터 작성하고 푸시네요. 이런 힌트 조차 잡아내서 풀어야하는걸까요?? 감사합니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
아무설명없이 갑자기 설명없이 해결방법이 나와서 당황했습니다.
그냥 해결방법 패턴을 외워야하는건가요,..,..??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
컴파일 에러
컴파일 에러가 뜨는데 어디가 문제인지 모르겠습니다ㅠㅠ class Main { public static int solution(int[] arr) { int count = 1; int max = arr[0]; for(int i=1; i<arr.length; i++) { if(arr[i] > max) { max = arr[i]; count++; } } return count; } } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int[] arr = new int[num]; for(int i=0; i<num; i++) { arr[i] = sc.nextInt(); } System.out.println(test2.solution(arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 시스템이 이상한거 같습니다.
채점시스템에 문제가 정답으로 맞췄는데 옆에 파란색 표시가 안뜨는 경우가 있네요. 새로고치거나 로그아웃해도 마찬가지입니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 시 일부 오답이 나오는데 확인 부탁드립니다.
import java.util.Scanner; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(main.solution(str)); } public String solution(String str) { String answer = ""; String[] arrays = str.split(" "); for (String s : arrays) { if (s.length() > answer.length()) { answer = s; } } return answer; } } it is time to study -> it dkjg LKKL KJkjglkd Kjgkd LKKJLJLJLKJLLLLLLL -> dkjg 이렇게 나온다고 하는데 디버깅 돌려봐도 정상 동작하는 것 같은데 혹시 잘못 된 부분이 있을까요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
슬라이딩 윈도우
슬라이딩 윈도우 문제는 설명해주신 것에 따르면 1) rt 를 for문으로 0부터 n까지 돌린다. 2) 내부적으로 lt 가 따라서 증가하는 조건을 만들어준다. 3) lt 증가식 이후에 답안을 위한 계산식을 넣어준다. 순서로 이해하고 문제를 진행하면 될까요? 아직 많은 문제를 풀어보지 않아서 경험이 부족해서 여쭤봅니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
블로그에 기록해도 될지 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 다름이 아니라 강의를 들으면서 문제 해결 과정을 블로그에 기록하고 싶은데, 혹시 문제와 , 선생님의 풀이가 함께 나와도 될지 여쭙고 싶습니다.