목록전체 글 (531)
개발놀이터
package string.SecureNumber112.my; import java.util.Scanner; public class Main { /** * -내 풀이- * 입력 받은 문자열을 replace 를 이용해 1 과 0 으로 이루어진 문자열로 바꾸는데 성공 했다 * 그리고 7개 단위로 끊어서 나열하는 것까지도 성공했다. * 하지만 10진수를 2진수로 바꾸는 것을 몰라서 그리고 2진수를 아스키코드로 다시 바꾸는 것도 몰라서 * 결국 구글링으로 해결했음 * * -선생님 풀이- * 1. 문자열을 0부터 7까지 substring 을 이용해 자른다 * 2. replace 메서드를 이용해 # 은 1 로 * 은 0 으로 바꾼다. * 3. Integer 클래스에 parseInt 로 2진수 -> 10진수로 바꾼다..
package string.CompressionString111.my; import java.util.Scanner; public class Main { /** * -내 풀이- * i + 1 까지 넣으면 index 가 초과되어 로직을 추가했는데 괜한 뻘짓이었다. * * --피드백-- * 그냥 들어오는 input 에 빈칸 하나 추가하면 되는 것이었다.. 너무 허무.. */ public static void main(String[] args) { Scanner kb = new Scanner(System.in); String input = kb.next(); System.out.println(solution(input)); } private static String solution(String input) {..
package string.MinimumCharacterDistance110.my; import java.util.Scanner; public class Main { /** * -내풀이- * 이건 진짜 아닌거 같아서 그냥 포기합니다. 시간만 오지게 잡아먹었네요... * * -선생님 풀이- * 1. int 배열을 해당 문자 크기만큼 만들고 * 2. 배열 최대 크기보다 훨씬 큰 p 를 설정한 후에 * 3. 왼쪽에서 오른쪽으로 for 문을 돌면서 왼쪽 타겟까지의 거리를 잰다. * t e a c h e r m o d e -> e (만약 맨 첫글자가 타겟이 아니면 p 타겟이면 0 으로 설정한다.) * x 0 1 2 3 0 1 2 3 4 0 (x = p) * 4. 다음엔 오른쪽에서 왼쪽으로 for 문을 돌리면서 오..
package string.ExtractionNumber19.my; import java.util.Scanner; public class Main { /** * -내 풀이- * replaceAll 메서드를 이용해 정규표현식으로 숫자가 아닌 것들을 빈칸으로 바꿔 숫자만 뽑았다. * * --피드백-- * IDEA 의 도움을 받아버렸다... 실전에서였으면 해결하기 쉽지 않았을 문제 * * --선생님의 풀이-- * 1. answer = 0 으로 초기화 후 String -> toCharArray 로 바꾸고 각각의 문자를 아스키코드로 48 ~ 57 로 설정하여 * for (char x : str.toCharArray()) { * if (x >= 48 && x 100) { throw new StringOrNumber..
package string.CircleString18.my; import java.util.Scanner; public class Main { /** * -내 풀이- * 이번 문제 또한 lt 와 rt 를 도입해 공백, 특수문자를 if, else if 문으로 일일이 검사했다 * * --피드백-- * 1-7번 문제와 동일한 피드백, 알고리즘 / 자료구조를 사용했다는 느낌이 안든다. * * -선생님의 풀이- * 정규표현식 + replaceAll 로 아주 간단하게 풀어냈다. 간단한 정규표현식 정도는 알아두면 좋을 것 같다. * * "[^A-Z]" * ^ : ~가 아닌 * A-Z : A 부터 Z 까지 * = A 부터 Z 가 아닌 */ public static void main(String[] args) { Sca..
package string.CircleString17.my; import java.util.Scanner; public class Main { /** * -나의 풀이- * 이전 시간에 배웠던 lt 와 rt 의 개념을 도입해서 각각의 문자가 다르면 checkPoint 를 1 증가시켜서 * 최종적으로 0이면 (증가하지 않으면 -> 각각의 문자가 같으면) YES 를 리턴, 0이 아니면 NO 를 리턴 * * --피드백-- * 음... 문제는 맞았다. 하지만 알고리즘, 자료구조를 사용했다는 느낌은 전혀 받을 수 없었음 * 그냥 꼼수같은 느낌..? 이거 실제로 코딩테스트에서 제출하면 답은 맞지만 높은 점수는 주지 않을듯 함 * * -선생님의 풀이- * 1. 전체 길이 / 2 한만큼까지 for 문을 돌려서 앞 뒤를 ..
package string.duplicateword16.my; import java.util.Scanner; public class Main { /** * 맞췄다아아아아아아아아아아아아아아아아 * * savePoint 의 개념 도입으로 save 배열에 알파벳이 담기는 첫 순간은 지나가고 * 그 후에는 savePoint 의 수가 1이 아니게 되기 때문에 이점을 이용하여 중복 제거 * * 진짜 자괴감 엄청나다... * 선생님이 너무 쉽게 풀어버려서 똥꼬쑈 한 내가 너무 바보된 느낌... * * String 클래스의 indexOf 를 이용하면 정말정말 쉽게 풀린다... * * cf) indexOf 란? * 쉽게 말해 index 위치를 알려주는 것이다. * * ex) String str = Spring 이라는 글..
package string.flipspecificcharacter15.my; import java.util.Scanner; public class Main { /** * 반은 맞추고 반은 못맞춘 문제... 정말 아쉽다... * * 키포인트 * 1. '특수문자' 면 lt 는 ++ rt 는 -- 해야한다. * 2. if / else if / else 문으로 하나로 묶어야 한다. * * if (lt = 특수문자) { * lt++; * } * else if (rt = 특수문자) { * rt--; * } * else (둘다 알파벳인 경우) { * 둘이 바꿔 * } * * 1번은 생각했는데 2번을 생각 못했다... 진짜 개바보보 */ public static void main(String[] args) { Scan..
package string.flipword14.my; import java.util.Scanner; public class Main { /** * 으아아아아아아아 맞췄다아아아아아아아아아아아아아 */ /** * case1: * StringBuilder 클래스의 reverse 를 이용하면 정말 쉽게 풀린다. * 내가 푼 방법은 정말 원시적인 리버스이고 선생님이 푼 방식이 정말 깔끔한 리버스이다 다시 복습할 것 * * case2: * 1. String 문자열을 toCharArray 로 char 배열로 바꾼다. * * 2. lt, rt 의 개념 도입 * cf) lt, rt 란? * 예를 들어 study 라는 문자열을 char 배열로 바꾸면 * 0 1 2 3 4 * s t u d y * 이렇게 바뀐다. * * 여..
split 메서드를 이용해서 단어단어로 쪼개는 시도 까지는 정답이었으나 최댓값 구하는 알고리즘을 생각해내지 못했음 package string.wordsinsentence13.my; import java.util.Scanner; public class Main { /** * split 메서드를 이용해서 나누고 list 로 바꾼뒤 진행하려고 했으나 해결하지 못함 * * 최댓값 구하는 알고리즘을 생각하지 못했음음 * int max = Integer.MIN_VALUE; * int len = str.length(); * * if (len > max) { * len = max; * } */ public static void main(String[] args) { Scanner kb = new Scanner(Syst..