프로그래머스

[프로그래머스] 가장 가까운 같은 글자

킴준현 2024. 9. 25. 23:47

https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📌 내가 구현한 정답

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        answer[0] = -1;
        
        for(int i = 1; i<s.length(); i++) {
            for(int j = i-1; j>=0; j--) {
                if(s.charAt(i) == s.charAt(j)) {
                    answer[i] = i-j;
                    break;
                } else {
                answer[i] = -1;   
            }
        }
    }
        return answer;
    }
}

 

 

안쪽 for문의 조건식은 i - 1부터 0까지 감소시킨다.

매개변수 String s의 s.charAt(i)가 s.charAt(j)와 같으면 i - j 한 값을 배열에 저장시킨 후 j 반복문을 탈출한다.

 

 

🔑 다른 풀이

class Solution {
    public int[] solution(String str) {
        int[] result = new int[str.length()];

        for(int i=0;i<str.length();i++){
            String subStr = str.substring(0,i);
            
            if(subStr.indexOf(str.charAt(i))==-1) {
                result[i] = -1;
            } else {
                result[i] = i-subStr.lastIndexOf(str.charAt(i));
            }
        }
        return result;
    }
}

 

 

📌 TIL

charAt(i) 함수란?

String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수.

 

❗ 숫자형태의 String에서  int 변수로 바로 변환할 때

String 관련 코딩테스트 문제를 풀 때 알아야하는 함수!

ex) int num = str.charAt(i) - '0';

 

char 타입의 문자를 int 타입의 변수로 변환할 때 사용하는 함수

String numbers = "12345";

// 숫자로 구성된 String 변수에서 특정 숫자를 바로 int 변수로 가져올 수 있다.
int targetNumber1 = numbers.charAt(0) - '0';
int targetNumber2 = numbers.charAt(1) - '0';
int targetNumber3 = numbers.charAt(2) - '0';

System.out.println("targetNumber1 = "+targetNumber1);
System.out.println("targetNumber2 = "+targetNumber2);
System.out.println("targetNumber3 = "+targetNumber3);

int test1 = 10 - targetNumber1;
int test2 = 10 - targetNumber2;
int test3 = 10 - targetNumber3;

System.out.println("10 - targetNumber1 = "+test1);
System.out.println("10 - targetNumber2 = "+test2);
System.out.println("10 - targetNumber3 = "+test3);

 

[결과]

 


Reference

https://velog.io/@shin_stealer/%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84-String-%EA%B4%80%EB%A0%A8-%EB%AC%B8%EC%A0%9C%EC%97%90%EC%84%9C-%EC%9E%90%EC%A3%BC%EC%93%B0%EC%9D%B4%EB%8A%94-%ED%95%A8%EC%88%98-%EC%A0%95%EB%A6%ACJAVA

 

JAVA 코딩테스트 - charAt() 함수

charAt 함수란?String 타입의 데이터(문자열)에서 특정 문자(character)를 char 타입으로 변환할 때 사용하는 함수이다.예시)결과반복문 활용 예시 1)역순 조회결과반복문 활용 예시 2)순서대로 조회결과

velog.io