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 | 29 | 30 |
Tags
- 파이썬
- 연산자
- JavaScript
- Java
- pandas
- 야학
- 생활코딩 머신러닝야학
- flatten
- Database
- 데이터베이스
- 머신러닝
- CNN
- 판다스
- Python
- 딥러닝
- 데이터베이스 개론
- 머신러닝(딥러닝)
- tensorflow
- MySQL
- reshape
- LeNet
- 개발자
- 카카오클라우드스쿨2기
- 머신러닝야학
- 생활코딩 데이터베이스
- 이것이 자바다
- 생활코딩
- 데이터베이서
Archives
- Today
- Total
IT's 우
[java] 프로그래머스 - 짝지어 해결하기 본문
728x90
📖 풀이한 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 문제에서 사용된 알고리즘
- 스택
📜 코드 설명
- 스택의 후입선출구조를 이용해서 문제를 풀어주었다.
- 스택이 비어있다면 문자를 넣어주었다.
- 스택이 비어있지 않다면 스택에 최근에 들어왔던 문자(peek)와 현재 문자가 같다면 짝지어진 문자이므로 스택 pop을 해주었다. 같지 않다면 현재 문자를 스택에 넣어주었다.
- 위 과정을 문자열의 문자를 하나씩 확인해주며 반복해 주고 반복문이 끝나고 스택이 비어있다면 짝지어 모두 제거를 성공한 것이 아니라면 실패한 것이다.
📜 코드
import java.util.*;
class Solution
{
public int solution(String s)
{
// s를 문자 배열로 변환
char [] c = s.toCharArray();
// 문자를 담아서 최근에 들어온 문자와 비교하여 짝인지 확인하기 위해 스택 사용
Stack<Character> sk = new Stack<>();
// 문자열 길이
int len = s.length();
// 문자를 하나씩 넣으며
// 스택이 비었다면 비교할 문자가 없기 때문에 넣고
// 스택이 비어있지 않다면 최근에 넣었던 문자가 현재 비교할 문자와 같다면 pop하고
// 같지 않더라면 현재 문자를 스택에 넣는다.
for (int i = 0; i < len; i++) {
if (sk.isEmpty()) {
sk.push(c[i]);
} else if (sk.peek() == c[i]) {
sk.pop();
} else {
sk.push(c[i]);
}
}
// 스택이 비었더라면 모두 짝지었기 때문에 성공, 아니라면 실패
int answer = sk.isEmpty() ? 1 : 0;
return answer;
}
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[java] 프로그래머스 - k진수에서 소수 개수 구하기 (2) | 2023.08.09 |
---|---|
[java] 프로그래머스 - 숫자의 표현 (0) | 2023.08.08 |
[Java] 프로그래머스 - 기지국 설치 (0) | 2023.07.19 |
[Java] 프로그래머스 - 달리기 경주, HashMap (0) | 2023.07.18 |
[java, BFS(깊이우선탐색)]프로그래머스 - 리코쳇 로봇 (1) | 2023.06.01 |