월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 오류 질문드립니다.
안녕하세요. 채점시 테스트케이스 1번에서 런타임 오류가 발생합니다. 나머지 케이스들은 모두 정상 통과하는데요 1번 입력이 어떤건지 확인좀 부탁드리겠습니다. import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in); sc.nextLine(); String str = sc.nextLine().replaceAll("#", "1").replaceAll("\\*", "0"); for (int i = 0; i < str.length(); i += 7) {int chr = Integer.valueOf(str.substring(i, i + 7), 2); System.out.print((char) chr); }}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간복잡도
시간복잡도 O(n^2) 이런거는 따로 공부해야 되는건가요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
04-02 아나그램 테스트케이스 추가요청.
"CCCCAB"와 "CAB"는 아나그램이 아니지만 함수 실행을 하면 "YES"가 리턴됩니다. 테스트케이스에 "CCCCAB", "CAB" -> NO 추가하시고 코드 마지막 부분에 Map의 모든 Key들의 value가 0인지 확인하는 코드 추가해야될 것 같습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 질문 드립니다.
import java.util.*; public class Main { public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] arr = new int[n][5]; for (int i = 0; i < n; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = in.nextInt(); } } System.out.println(T.solution(n, arr)); } private static int solution(int n, int[][] arr) { int answer = 0; int temp; int high = 0; for (int k = 0; k < n; k++) { temp = 0; for (int i = 0; i < n; i++) { // if(k == i) continue; for (int j = 0; j < 5; j++) { if (arr[k][j] == arr[i][j]) { temp++; break; } } } if (temp > high) { high = temp; answer = k + 1; } } return answer; } } 안녕하세요. 강의 듣기 전에 혼자 풀어본 코드인데요. 현재 학생(k)과 전체 학생 i(0 < i < n)를 각 학년별로 j(0 < j < 5) 비교하면서 같은 반인 경우(arr[k][j] == arr[i][j]), 카운팅을 하고 break로 다음으로 넘어가는 식으로 작성을 했습니다. 근데 현재 학생(k)과 비교 학생(i)이 같은 순간(자기 자신)에 continue를 하니까 오답이 뜨고, 해당 코드를 지우면 정답이 되는데 둘 다 정답이 아닌가 해서 질문 올립니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 코드
public String solution(String str1, String str2) { String answer = "YES"; HashMap<Character, Integer> map1 = new HashMap<>(); for(char v: str1.toCharArray()) { map1.put(v, map1.getOrDefault(v, 0)+1); } for(char v: str2.toCharArray()) { if(!map1.containsKey(v) || map1.get(v)==0 ) return "NO"; map1.put(v, map1.get(v)-1); } for(char v: map1.keySet()) { if(map1.get(v)!=0) return "NO"; } return answer; } 같은 key를 찾아서 -1을 했는데 0이 아닌 경우도 있을것 같아서 for(char v: map1.keySet()) { if(map1.get(v)!=0) return "NO"; } 이 부분을 추가했는데 하는게 맞을까요? 아니면 불필요한 부분인가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
replace, replaceAll
안녕하세요 선생님, String tmp = str.substring(0, 7).replace("#", "1").replace("*", "0"); 문장에서 replaceAll과 replace의 차이점이 궁금합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
키 입력 순서에 따라 실행이 되었다가 안되었다가 하는데 원인을 모르겠습니다;
안녕하세요. 선생님 해당 문제를 아래와 같이 풀었습니다 그런데, n과 m의 위치를 바꾸면 실행이 안되는데요 입력값을 받을 때 이슈가 있는 것같은데, 원인을 찾을수가 없었습니다ㅠ 선생님께서 배포해주신 답안도 마찬가지 현상이 있는데요 혹시 원인을 알 수 있을까요? import java.util.*;public class Main { static int m, n, answer = 0; public void DFS(int L, int sum, int[] score, int totalTime, int[] time){ if(totalTime > m) return; if(L == n){ answer = Math.max(answer, sum); }else{ DFS(L+1, sum + score[L], score, totalTime + time[L], time); DFS(L+1, sum, score, totalTime, time); } } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); n = kb.nextInt(); // 문제수 m = kb.nextInt(); // 제한시간 // n과 m 바꾸면 안됩니다 int[] score = new int[n]; int[] time = new int[n]; for(int i=0; i<n; i++){ score[i] = kb.nextInt(); time[i] = kb.nextInt(); } T.DFS(0, 0, score, 0, time); System.out.println(answer); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
소수 에라토스테네스 체 이런 풀이 방법도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. package Array; import java.util.*; /** * 소수에라토스테네스체 */ public class 소수에라토스테네스체 { public static int solution(int n){ int answer=0; boolean [] solo = new boolean[n+1]; solo[0]=true; solo[1]=true; for(int i=2;i<=n;i++){ if(solo[i]==false) answer++; for(int j=i*i;j<=n;j+=i){ solo[j]=true; } } // int[] ch = new int[n+1]; // for(int i=2;i<ch.length;i++){ // if(ch[i]==0){ // answer++; // for(int j=i;j<=n;j+=i){ // ch[j]=1; // } // } //} return answer; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); System.out.println(solution(n)); } } boolean배열을 사용해서 true인 경우는 소수가 아니라 판단을 하여주였습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
sort 함수 이용시 문제점 발견
안녕하세요 선생님. 문제 풀던중 질문이 있어 질문 남깁니다. 아래와 같이 sort를 이용하여 정렬을 해봤는데, 2번째 채점결과에서 인덱스 번호 800번까지는 정렬이 잘 되나, 그 뒤로 무너지는 현상이 발견되었습니다. 선생님이 풀어주신 내용과는 무관하나, 너무 궁금하여 질문드립니다. 감사합니다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); List<List<Integer>> input = new ArrayList<>(); for (int i = 0; i < n; i++) { List<Integer> tmp = new ArrayList<>(); String[] s = br.readLine().split(" "); tmp.add(Integer.valueOf(s[0])); tmp.add(Integer.valueOf(s[1])); input.add(tmp); } input.sort((o1, o2) -> o1.get(0)==o2.get(0)? o1.get(1)-o2.get(1) : o1.get(0)-o2.get(0)); for (List<Integer> integers : input) { System.out.println(integers.get(0)+" " + integers.get(1)); } }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
다른 풀이 방식(set을 이용한 중복제거)
선생님 항상 수고가 많으십니다 다름이 아니라 Set을 이용하여 중복제거하고 마지막에 정답학생의 i에 +1해서 답을 반환했는데요 IDE에서 할때는 답이 잘나오는데 코딩채점에 입력하면 오답으로 나옵니다. 코드 한 번 봐주실 수 있을까요? import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public static int Solution(int n, int[][] arr) { Set<Integer> set = new HashSet<>(); int max = 0; int answer = 0; for(int i = 0 ; i < n ; i++) { for(int j = 0 ; j < 5 ; j++) { for(int k = 0 ; k < n ; k++) { if(i!=k) { if(arr[i][j] == arr[k][j]) { set.add(k); } } } } System.out.println(set); if(max < set.size()) { max = set.size(); answer = i+1; } set.clear(); } return answer; } public static void main(String[] args) { 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(Solution(n,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
혹시 이 방법으로 풀어도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import java.util.*; public class 문자열압축 { public static String solution(String str){ String answer = ""; char temp=' '; int num = 1; str+=" "; for(int i=0;i<str.length();i++){ if(temp==str.charAt(i)){ num++; }else{ answer+=temp+Integer.toString(num); num=1; } temp=str.charAt(i); } answer=answer.replaceAll("1","").trim(); return answer; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str = scan.nextLine(); System.out.println(solution(str)); } } replaceAll, trim을 사용하여 출력을 받았고 이전에 저장해준 값을 가져와서 쓰는 방식으로 구현하였습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8개 방향 문의드립니다.
dx = new int[]{1,0,-1,0}; dy = new int[]{-1,0,1,0};이렇게 하면 대각선도 포함되서 오류였는데 상하좌우 대각선 다 포함해서 돌때는 배열에 순서상관없이 각 합이 0으로만 끝나면 될까요? 선생님 안녕하세요! 상하좌우 대각선 방향문의드립니다. 기존에 상하좌우 방향만 구해야했을땐 dx = new int[]{1,0,-1,0}; dy = new int[]{-1,0,1,0}; 식으로하면 대각선방향도 포함되어서 오류가났는데, 이번 문제는 대각선도 포함히니까 dx[],dy[] 안에 넣는숫자이 순서는 상관없을까요 ?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트 케이스 5번 실패
안녕하세요 강사님, 강의 잘 듣고 있습니다. 다름이 아니라 문제 해결하는데 테스트를 통과하지 못해서 문의드리고 싶습니다. 5번 테스트 결과가 180으로 나오는데 제 코드에서는 0으로 나오게 됩니다. 입력값이 너무 크기에 디버깅이 힘들기도 하고 강의 보면서 잘못된 부분을 찾아보려고 했으나, 감이 잘 안오기에 이렇게 문의 드립니다... ㅠㅜ import java.util.HashMap;import java.util.Map;import java.util.Scanner;public class Pr04_my04 { private int solution(String str, String compare) { int answer = 0; char[] strArr = str.toCharArray(); char[] compareArr = compare.toCharArray(); int cnt = 0; Map<Character, Integer> compareMap = new HashMap(); for(char x : compareArr){ compareMap.put(x, compareMap.getOrDefault(x, 0)+1); } Map<Character, Integer> strMap = new HashMap(); for(int i = 0; i < compare.length(); i++ ){ strMap.put(strArr[i], strMap.getOrDefault(strArr[i], 0)+1); } if(compareMap.equals(strMap)){ answer ++; } int head = compareMap.size(), tail = 0; while (head < strArr.length){ strMap.put(strArr[head], strMap.getOrDefault(strArr[head], 0)+1); strMap.put(strArr[tail], strMap.get(strArr[tail])-1); if(strMap.get(strArr[tail]) == 0){ strMap.remove(strArr[tail]); } if(compareMap.equals(strMap)){ answer ++; } head++; tail++; } return answer; } public static void main(String[] args) { Pr04_my04 pr = new Pr04_my04(); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); String compare = sc.nextLine(); System.out.print(pr.solution(str, compare)); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
결과 출력시 x+ " " 에 대해 질문있습니다
결과 출력할 때 System.out.print(x + " "); 이렇게 출력하는 경우 마지막에도 공백이 추가되는데 만약에 코테 문제중에, 정답 출력 시 마지막 공백이 포함되면 안된다면 그럴 경우 어떻게 해야하나요? 그럴 경우가 있는지 궁금하구 그냥 똑같이 출력하면 되는지 궁금합니당 ..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 runtime이 뜰까요 ;;
IDE에서 컴파일시에는 잘 되는데 , 왜 채점시에는 RUNTIMEERROR가 뜨는지 모르겠어요. 한번 봐주실 수 있을까요?? public class Main { public int solution(int n , int [][] arr){ int answer = Integer.MIN_VALUE; int sum1 = 0; int sum2 = 0; int sum3 = 0; int sum4 = 0; for(int i=0, k = 4; i < n ; i++ , k--){ sum3+=arr[i][i]; //대각선들의 합 sum4+=arr[k][k]; for(int j=0; j < n ; j++){ sum1 += arr[i][j]; //행의 합 sum2 += arr[j][i]; //열의 합 } answer=Math.max(answer, sum1); answer=Math.max(answer, sum2); sum1 = 0; sum2 = 0; } answer=Math.max(answer, sum3); answer=Math.max(answer, sum4); return answer; } public static void main(String[] args) { Main t = new Main(); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int [][] arr = new int[n][n]; for(int i=0; i < arr.length ; i++){ for(int j=0; j <arr[i].length; j++){ arr[i][j] = scan.nextInt(); } } System.out.println(t.solution(n,arr)); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러 이유를 도저히 모르겠습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 계속 안돼서 하다하다 강의에서 푼거랑 똑같이 했는데도 런타임에러가 뜨네요 이유를 모르겠습니다.... 도와주십쇼
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
답이 맞는데 계속 오답으로 나와요...
어디가 잘못된 건지 한 번 봐주실 수 있으신가요? public static void main(String[] args) { Scanner sc = new Scanner(System.in); String next = sc.next(); char c = sc.next().charAt(0); for(int x : solution(next, c)){ System.out.print(x + " "); }}public static int[] solution(String s, char c){ int[] answer = new int[s.length()]; //오른쪽으로 돌 거 int [] right = new int[s.length()]; //왼쪽으로 돌 거 int[] left = new int[s.length()]; int count = 0; for(int i =0; i<s.length(); i++){ if(s.charAt(i) != c){ count++; }else{ count = 0; } answer[i] = count; } count = 0; for(int i = s.length()-1; i >=0; i--){ if(s.charAt(i) != c){ count++; }else{ count = 0; } if(count < answer[i]){ answer[i] = count; } } return answer;}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
K번쨰 큰 수 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 cnt 이용해서 세번째 요소에 접근한 것을 저는 iterator를 이용해서 했는데 런타임 에러가 뜹니다. iterator 사용하면 속도가 더 느린가요?? 아니라면 런타임 에러가 뜨는 이유가 궁금합니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 오류가 생길까요?
import java.util.*; class Main { public String solution(String str) { String answer = "YES"; str.toLowerCase(); for (int i = 0; i < str.length() / 2; i++) { if (str.charAt(i) == str.charAt(str.length() - i - 1)) { answer = "YES"; } else { answer = "NO"; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); String str = sc.next(); System.out.println(T.solution(str)); } } 이게 왜 오류나는지 궁금합니다...
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
다른 풀이로 풀어보았는데 확인해주시면 감사하겠습니다.
저는 괄호에 초점을 맞춰서 다르게 풀어보았습니다. 문자가 들어왔을 때, 괄호에 대한 스택이 비어있으면 괄호 밖에 있다고 판단하고 문자를 출력하는 방식으로 구현했습니다. 풀이에 논리적 오류가 있는지 확인해주시면 감사하겠습니다. import java.util.Scanner; import java.util.Stack; public class Main { public static String solution(String[] text) { Stack<String> bracketStack = new Stack<>(); StringBuilder answer = new StringBuilder(); for (String word : text) { if (word.equals("(")) bracketStack.push(word); else if (word.equals(")")) bracketStack.pop(); else if (bracketStack.isEmpty()) answer.append(word); } return answer.toString(); } public static void main(String[] args) { Scanner input = new Scanner(System.in); String[] text = input.next().split(""); System.out.println(solution(text)); } }