코테 준비 11일차_8/20

Jieun·6일 전

코딩테스트 준비

목록 보기
4/8
post-thumbnail
  1. 문자열 여러번 뒤집기
    배열 길이만큼 뒤집어야 되고, 배열 숫자만큼 돌려야 됨
    2차열 배열을 어떻게 1차열로 바꿔야 될까
  • 초기 정답
class Solution {
    public String solution(String my_string, int[][] queries) {
        String answer = "";
        for(int i=0;i<queries.length;i++) {
            int a = queries[i][];
            int b = queries[][i];
            for(int j = a;j<b;j++) {
                my_string.replace(b,a);
            }
        }
        return answer;
    }
}
  • 제출 정답
class Solution {
    public String solution(String my_string, int[][] queries) {
        StringBuilder sb = new StringBuilder(my_string);
        for(int i=0;i<queries.length;i++) {
            int a = queries[i][0];
            int b = queries[i][1];
            
            String sub = sb.substring(a, b +1);
            String reversed = new StringBuilder(sub).reverse().toString();
            sb.replace(a, b +1, reversed);
        }
        return sb.toString();
    }
}

int a = queries[i][0];
int b = queries[i][1];로 시작점이랑 끝점 정하고
String sub = sb.substring(a, b + 1);로 a부터 b까지의 부분 문자열을 구한 뒤 뒤집으면 됨

  1. 배열 만들기 5
    문자열 배열크기만큼 반복해서 s부터 l까지 잘라낸후 K보다 크면 베열에 넣으면 됨
    문자열을 원하는 만큼 잘라서 정수로 변환해야 되는데 모르겠음
  • 초기 정답
class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        int[] answer = {};
        for(int i=0;i<intStrs.length;i++) {
            int a = intStrs[i].substring(s, l);
            if (a > k) {
                answer[i] = a;
            } 
        }
        return answer;
    }
}
  • 제출 정답
import java.util.ArrayList;
import java.util.List;
class Solution {
    public int[] solution(String[] intStrs, int k, int s, int l) {
        List<Integer> list = new ArrayList<>();
        for(int i=0;i<intStrs.length;i++) {
            String sub = intStrs[i].substring(s, s + l);
            int val = Integer.parseInt(sub);
            if (val > k) {
                list.add(val);
            } 
        }
        return list.stream().mapToInt(i -> i).toArray();
    }
}


이 방법도 깔끔해서 좋은듯

  1. 부분 문자열 이어 붙여 문자열 만들기
    인덱스 s부터 인덱스 e까지의 부분 문자열 추출해서 다 합치면 될거 같음
  • 초기 정답
class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        StringBuilder answer = new StringBuilder();
        for(int i =o;i<parts.length;i++) {
            int a = parts[i][0];
            int b = parts[i][1];
            answer.add(my_strings.substring(a, b));
        }
        return answer.toString();
    }
}
  • 제출 정답
class Solution {
    public String solution(String[] my_strings, int[][] parts) {
        StringBuilder answer = new StringBuilder();
        for(int i =0;i<parts.length;i++) {
            int a = parts[i][0];
            int b = parts[i][1];
            answer.append(my_strings[i].substring(a, b+1));
        }
        return answer.toString();
    }
}

StringBuilder에 값을 추가할 때는 add가 아니라 append()를 써야함
substring(a, b)는 끝 인덱스 b를 포함하지 않고 그 직전까지만 잘라내. 그래서 e까지 온전히 포함하려면 b + 1을 적어야 함
이 방법도 깔끔하고 좋은듯

profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글