Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 서버
- 조건문
- k8s
- 자바
- mongodb
- puppeteer
- mysql
- MapReduce
- Scanner
- 프로그래머스
- eof
- restapi
- graphql
- redis
- HTTP
- Mongoose
- 스프링
- Docker
- ai
- nodejs
- bufferdreader
- LangChain
- TCP
- Apollo
- Android
- 백준알고리즘
- Spring
- 스프링부트
- java
- java11
Archives
- Today
- Total
자라나라 개발머리
[프로그래머스/JAVA] 잘라서 배열로 저장하기 본문
문제 정보
문제 설명
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
입출력 예
my_str | n | result |
"abc1Addfggg4556b" | 6 | ["abc1Ad", "dfggg4", "556b"] |
"abcdef123" | 3 | ["abc", "def", "123"] |
한 줄 메모
내가 이딴 문제를 못 풀다니? 싶었던 문제. 현타도 엄청 오고 동기부여도 되는 문제였다.
풀이과정
답안 1
class Solution {
public String[] solution(String my_str, int n) {
String[] answer = my_str.split("(?<=\\G.{" + n + "})");
return answer;
}
}
split() 함수에 정규표현식을 사용하여 조건 만들었다.
(?<=\\G.{" + n + "})의 의미를 하나씩 풀어서 설명해보자면,
(?<=) 긍정형 후방탐색
일치하는 패턴을 찾으면서(긍정형), 기준이 되는 이전 문자열을 리턴하지 않는다.(후방탐색)
\\G 이전 매칭이 끝난 지점에서 시작
.{"+n+"} 임의의 문자 n개
. 임의의 문자 1개
{"+n+"} 반복수
한 줄 메모
구글링 해본 답안 중 가장 간결했던 답안이지만, 실제로 내가 코딩할 땐 정규표현식을 찾기 번거로워서 쓰기 힘들 것 같다.
답안 2
class Solution {
public String[] solution(String my_str, int n) {
//배열 크기 저장
int len = my_str.length()%n==0 ? my_str.length()/n : (my_str.length()/n)+1;
String[] answer = new String[len];
//배열에 문자열 잘라 저장
for (int i=0; i<len; i++) {
answer[i] = my_str.substring(i*n,(i+1)*n > my_str.length() ? my_str.length() : (i+1)*n );
}
return answer;
}
}
삼항 연산자가 주가 되는 답안이다.
한 줄 메모
구글링 한 것 중 가장 맘에 드는 코드!
삼항 연산자를 잘 사용한 코드라고 생각한다. 앞으로 알고리즘 짤 때 삼항연산자도 고려해보아야겠다.
특히, 배열에 문자열을 잘라 저장할 때 사용된 코드가 내 머리에선 나올 수 없을 것 같은 코드였다.
더 컴퓨터같이 생각하자 ㅋㅋ!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JAVA] 구명보트 (0) | 2023.04.01 |
---|---|
[프로그래머스/JAVA] 소수 만들기 (0) | 2023.03.29 |
[프로그래머스/JAVA] 알파벳으로 역직각삼각형 출력하기 (0) | 2023.03.19 |
[프로그래머스/JAVA] 짝수 번째 입력된 값의 합과 홀수 번째 입력된 값의 평균 구하기 (0) | 2023.03.18 |
[프로그래머스/JAVA] 연속된 자연수의 합 구하기 (0) | 2023.03.17 |