알고리즘/인프런_자바코테강의

인프런 10. 가장 짧은 문자 거리 (Java)
내 풀이가 없고 강사님 풀이임. 어려웠다. 앞에서 뒤로 한번 구하고 뒤에서 앞으로 거리를 구해서 최소값을 찾아서 배열에 담아줌 public class Main { public int[] solution(String s, char t) { int[] answer = new int[s.length()]; char[] x = s.toCharArray(); int p = 1000; for (int i = 0; i =0 ; i--) { if (x[..

인프런 9. 숫자만 추출 (Java)
내 풀이 Character클래스의 isDigit 메서드를 활용하여 숫자 판별 public class Main { public void solution(String s) { String answer = ""; for (char x : s.toCharArray()) { if (Character.isDigit(x)) answer+=x; } System.out.println(Integer.parseInt(answer)); } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); String s = sc.next(); T.solution(s); } } 다른 풀이 아스키코드 활용. 48~ 57..

8. 유효한 팰린드롬
풀이 replaceAll에 정규식으로 A-Z 대문자 알파벳 아니면 빈문자열로 교체 그외에는 그냥 reverse와 원 문자열 비교 public class Main { public void solution(String str) { str = str.toUpperCase().replaceAll("[^A-Z]", ""); String tmp = new StringBuilder(str).reverse().toString(); System.out.println(str.equals(tmp) == true ? "YES": "NO"); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine()..

인프런 7. 회문 문자열(JAVA)
내 풀이 회문은 자주 풀어서인지 풀이법을 외운듯 원래는 소문자로 변경하고 체크했는데, equalsIgnoreCase이면 대소문자 변환이 필요없다. public class Main { public void solution(String str) { //str = str.toLowerCase(Locale.ROOT); String str1 = new StringBuilder(str).reverse().toString(); if (str.equalsIgnoreCase(str1)) { System.out.println("YES"); } else System.out.println("NO"); } public static void main(String[] args) { Scanner sc = new Scanner(Sy..

인프런 6. 중복 문자 제거 (Java)
내 풀이 ArrayList의 contains로 list에 안 담겨 있는 문자를 추가해주고 출력 public class Main { public String solution(String str) { String answer = ""; ArrayList list = new ArrayList(); char[] c = str.toCharArray(); for (int i = 0; i < str.length(); i++) { if (!list.contains(c[i])) { list.add(c[i]); } } for (int i = 0; i < list.size(); i++) { answer += list.get(i); } return answer; } public static void main(String[] ..

인프런 5. 특정 문자 뒤집기 (Java)
풀이 4번의 세번째 투포인터 풀이와 같은 방법을 사용하는데 문제 설명이 자세하지 않아서 특수문자 일 경우 스킵하는 걸 상세하게 구현하지 못했다. public class Main { public String solution(String str) { String answer= ""; // 특정문자만 뒤집을 때, char[] s = str.toCharArray(); int lt = 0, rt = str.length()-1; while (lt

인프런 4. 단어뒤집기 (Java)
첫 번째 풀이 (내 풀이) public class Main { public void solution(String[] arr) { for (String s : arr) { System.out.println(new StringBuilder(s).reverse()); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); Main T = new Main(); int n = sc.nextInt(); String[] arr = new String[n]; for (int i = 0; i < n; i++) { arr[i] = sc.next(); } T.solution(arr); } } 두 번째 풀이 (선상님 풀이) public..

인프런 3. 문장 속 단어 (Java)
첫 번째 풀이 (내 풀이) public class Main { public String solution(String str) { String answer = ""; String[] arr = str.split(" "); int maxLength = Integer.MIN_VALUE; for (int i = 0; i maxLength) maxLength = arr[i].length(); } for (String s : arr) { if (s.length() == maxLength) { answer = s; break; // 중복단어 있을 경우 맨 앞 단어 출력 } } return answer; } public static void ..

인프런 2. 대소문자 변환 (Java)
아스키코드 활용한 변환 public class Main { private String solution(String str) { String answer = ""; char tmp; for (int i = 0; i < str.length(); i++) { tmp = str.charAt(i); if ((65

인프런 1. 문자찾기 (Java)
전부 대문자 or 소문자 변환한다는 생각을 못했네. char 타입 대소문자 변형이나 대소문자 체크하는 Character 클래스에 있다는 것을 배웠다. public class Main { public int solution(String str, char c) { int answer = 0; // Idea *** 전부 대문자 or 소문자로 변환 **** str = str.toUpperCase(); c = Character.toUpperCase(c); for (char x : str.toCharArray()) { if (x == c) answer++; } return answer; } public static void main(String[] args){ Scanner kb =new Scanner(System..