728x90
반응형
https://github.com/ROUTINE-STUDY/Algorithm
알고리즘 스터디를 진행하고 있습니다. 😊
초보들로 구성되어있으며, 열심히 풀어보고 풀이 방식을 공유하고 피드백을 해주는 스터디입니다.
참여 문의는 댓글 혹은 GitHub 주소를 참고해주세요.
문제 출처 : https://leetcode.com/problems/di-string-match/
문제 설명
I와 D로 구성된 문자열 s가 주어집니다.
s[0] == I 이면 arr[0] < arr[1] 다음 원소보다 작아야 합니다.
s[1] == D 이면 arr[1] > arr[2] 다음 원소보다 커야 합니다.
풀이 방법
말로 설명이 어려워서 그림을 통해 설명
"IDID" 를 예시로 한 그림입니다.
I일 때 값을 넣고 증가시키기 위한 head 변수는 0부터 시작합니다.
D일 때 값을 넣고 감소시키기 위한 tail 변수는 s의 길이부터 시작합니다.
I 이면 head의 값을 return Array에 넣고 head+1
D 이면 tail의 값을 return Array에 넣고 tail-1
주어진 문자열만큼 반복하면, head와 tail은 입력하지 않은 한 원소를 공통적으로 가리킵니다.
마지막 남은 원소를 return Array 마지막에 삽입
내 코드(JAVA)
class Solution {
public int[] diStringMatch(String s) {
int[] res = new int[s.length()+1];
int head = 0;
int tail = s.length();
for(int i=0; i<s.length(); i++) {
char ch = s.charAt(i);
res[i] = ch=='I' ? head++ : tail--;
}
// tail 값을 넣어도 상관 X, 안들어간 빈 값을 똑같이 가리킴
res[s.length()] = head;
return res;
}
}
설명이 더 힘드네요.. 😂
728x90
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/JAVA] 직업군 추천하기 (0) | 2021.08.28 |
---|---|
[LeetCode/JAVA] 071. Greatest Common Divisor of Strings (0) | 2021.08.19 |
[LeetCode/JAVA] 100. Same Tree (0) | 2021.08.10 |
[LeetCode/JAVA] 94. Binary Tree Inorder Traversal (0) | 2021.08.09 |
[LeetCode/JAVA] 589. N-ary Tree Preorder Traversal (0) | 2021.08.07 |
댓글