반응형
문제 : 함수를 이용한 부분 문자열 위치 구하기
<문제 링크>
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
풀이 방식
import java.util.Scanner;
public class Main {
static Scanner sc = new Scanner(System.in);
static String input = sc.next();
public static int subStr(String sub){
for(int i=0; i<=input.length() - sub.length(); i++){
if(input.substring(i,i+sub.length()).equals(sub)){
return i;
}
}
return -1;
}
public static void main(String[] args) {
String sub = sc.next();
int index = subStr(sub);
System.out.print(index);
}
}
- 전역 변수 선언
함수를 사용할 때 전부 인자로 넣어주는 것이 바람직하지만,
여러 함수에서 쓰일 것 같을 때 전역변수로 사용하면 Main class 내부의 모든 함수에서 자유롭게 사용이 가능하다.
(대신 보안성의 이유가 있으므로 주의하여 사용해야한다.)
subStr이라는 static 메서드에 접근해야한다.
아래에 정의한 input과 sc는 Main class의 인스턴스 변수들이여서 static 메서드에 접근하려면
static으로 전역변수를 정의해줘야 한다. - subStr 메서드
- i <= input.length()-sub.length();
String의 길이에 접근할때는 .length가 아닌 .length()이다.
부분 문자열의 첫번째 인덱스에 접근하는 것이므로 <가 아닌 <=로 접근해야한다. -
input.substring(i,i+sub.length()).equals(sub)
문자열끼리 등호 비교를 할 때에는 .equals() 명령어를 사용해야한다.
- i <= input.length()-sub.length();
반응형
'CodingTest' 카테고리의 다른 글
[백준] 1806번 부분합 (투포인터, 슬라이딩 윈도우) - JAVA (0) | 2025.03.30 |
---|---|
[프로그래머스 알고리즘 고득점 kit] 이분탐색 징검다리 - JAVA (1) | 2025.03.22 |
[프로그래머스 알고리즘 고득점 kit] 동적계획법(Dynamic Programming) 정수 삼각형 - JAVA (0) | 2025.02.24 |
[프로그래머스 알고리즘 고득점 kit] 탐욕법(Greedy) 조이스틱 - JAVA (2) | 2025.02.17 |
[코드트리] 그 계절, 그 날 - 코드트리 조별과제 (0) | 2024.08.10 |