728x90
안녕하세요! 오랜만에 프로그래머스 문제를 풀어봤습니다.
난이도 1의 연습문제입니다!
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
문제 이해
- t의 부분문자열 중에서 부분문자열이 나타내는 수가 p보다 작거나 같은 것이 나오는 횟수 리턴
- 부분 문자열과 특정 문자열과의 비교이기 때문에 첫 번째 인덱스부터 t의 길이와 p의 길이의 차이까지 순회하며 문자열을 추출하는 방식으로 문제 풀이가 가능할 것 같다.
해결 방법
- 첫 번째 인덱스부터 t의 길이와 p 길이의 차이까지 순회하며 substring(idx, idx + p.length) 로 문자열을 추출
- 해당 문자열을 Long 타입으로 변환
-
- 1 ≤ p의 길이 ≤ 18 이고, int는 18자리 표현이 불가능하여 18자리까지 표현이 가능한 long 자료형을 사용한다.
-
- p보다 작거나 같다면 answer의 값을 1 증가시킨다.
class Solution {
public int solution(String t, String p) {
int answer = 0;
long pNum = Long.parseLong(p);
int pLen = p.length();
for (int i = 0; i <= t.length() - pLen; i++) {
String part = t.substring(i, i + pLen);
long partNum = Long.parseLong(part);
if (partNum <= pNum) {
answer++;
}
}
return answer;
}
}
'문제풀기' 카테고리의 다른 글
테이블 해시 함수 (2) | 2022.12.29 |
---|---|
가장 가까운 같은 글자 (0) | 2022.12.29 |
프로그래머스 기지국 설치 (0) | 2022.04.24 |
프로그래머스 크레인 인형뽑기 게임 (0) | 2022.04.22 |
백준 문제 10699번 토마토 (0) | 2022.02.23 |