월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(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 문의하기를 이용해주세요. 안녕하세요 선생님. 다름이 아니라 강의를 들으면서 문제 해결 과정을 블로그에 기록하고 싶은데, 혹시 문제와 , 선생님의 풀이가 함께 나와도 될지 여쭙고 싶습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
HashSet을 사용한 풀이
public static void main(String[] args){ Scanner in=new Scanner(System.in); int input1 = in.nextInt(); Set<Integer> arr1 = new HashSet<>(); for(int i =0 ; i< input1; i++){ arr1.add(in.nextInt()); } int input2 = in.nextInt(); List<Integer> answer = new ArrayList<>(); for(int i =0 ; i< input2; i++){ int tmp = in.nextInt(); if( arr1.contains(tmp)){ answer.add(tmp); } } Collections.sort(answer); for(int ans : answer){ System.out.print(ans +" "); }}계속 시간 문제가 발생해서 HashSet 에 한 쪽을 저장하고 contains 를 사용하는 방법으로구현해서 정답 판정을 받았는데 이 풀이는 별로 효율적이지 않은걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
소팅 부분을 직접 구현하는 형식으로 코드를 짜봤는데요..
- 학습 관련 질문import java.util.*; public class PracticeWedding { public int solution(int number, List<List<String>> time){ int answer = 0;// for (int i =0 ; i < number; i++){ List<String> schdule = time.get(i); //시간 가져오기 String strTime = schdule.get(0); //변환 int intTime = Integer.parseInt(strTime); //state 가져오기 String state = schdule.get(1); for (int j = i+1; j < number ; j++){ List<String> schdule2 = time.get(j); //시간 가져오기 String strTime2 = schdule2.get(0); //변환 int intTime2 = Integer.parseInt(strTime2); //state 가져오기 String state2 = schdule2.get(1); if (intTime > intTime2){ List<String>temp = new ArrayList<>(); temp = time.get(i); time.set(i,time.get(j)); time.set(j,temp); }else if (intTime == intTime2){ if (state.equals("e")&&state2.equals("s")){ List<String>temp2 = new ArrayList<>(); temp2 = time.get(j); time.set(j,time.get(i)); time.set(i,temp2); } } } for (int z =1; z <time.size();z++){ System.out.print(time.get(z)); } System.out.println(" "); } //e와 s 판별 for (int z=0; z<number; z++){ List<String> schdule = time.get(z); String state = schdule.get(1); if (state.equals("s")){ answer++; }else { answer--; } } return answer; } public static void main(String[] args) { PracticeWedding practice1 = new PracticeWedding(); System.out.println("결혼식에 참석할 인원 수를 입력해주세요"); Scanner intput = new Scanner(System.in); String peoplNumber = intput.next(); List<List<String>>totalTimeArray = new ArrayList<>(); int number = Integer.parseInt(peoplNumber); for (int i = 0; i < number; i++ ){ System.out.println(i+"번째 돌아가는 친구의 시간을 입력하시오"); Scanner scanner = new Scanner(System.in); String totalTime = scanner.nextLine(); String[] array = totalTime.split(" "); String startTime = array[0]; String endTime = array[1]; List<String> manScheduleS = new ArrayList<>(); manScheduleS.add(startTime); manScheduleS.add("s"); totalTimeArray.add(manScheduleS); List<String> manScheduleE = new ArrayList<>(); manScheduleE.add(endTime); manScheduleE.add("e"); totalTimeArray.add(manScheduleE); } int Number = practice1.solution(number,totalTimeArray); System.out.println("Number = " + Number); } 오름차순 정렬도 직접 구현해서 코드를 짜봣는데... 오름차순 정렬 부분에서 아무리 봐봐도 뭐가 틀렸는지를 모르겠습니다... 혹시 알려주실수 있으신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
for(int pos : moves) 이부분을 그냥 일반 for문으로 바꾸고싶어요
for(int pos : moves) 이 부분을 일반 for문으로 바꾸고싶은데요 어떻게 바꿀수있을까요?ㅠ