문제 1 / Bracket
-목표 : 괄호의 순서에 따라 정수를 반환하는 프로그램 구현
사용한 알고리즘
Stack
-스택을 사용하여 여는 괄호와 닫는 괄호를 구분하여 짝이 맞는지를 검사하였다.
최종 코드
import java.util.Stack;
class Solution {
public int solution(String S) {
int answer = 1;
Stack<Character> stack = new Stack<>();
for(char c : S.toCharArray()){
if(c=='(' || c == '{' || c == '[' || c == '<'){
stack.push(c);
}else{
if (stack.isEmpty()){
answer = 0;
return answer;
}
char top = stack.pop();
if((c==')' && top != '(') ||
(c=='}' && top != '{') ||
(c==']' && top != '[') ||
(c=='>' && top != '<')){
answer = 0;
return answer;
}
}
}
if (!stack.isEmpty()) {
answer = 0;
}
return answer;
}
}
문제 2 / RepeatAlphabet
-목표 : 알파벳 문자열이 2회 연속으로 나타나면 제거하여 완전히 소거되면 1 남아있으면 0을 반환하는 프로그램
사용한 알고리즘
Approach
-현재 시점에서 최적이라고 생각되는 것을 선택하는 알고리즘 사용 / 여기선 중복된 숫자 제거에 사용됨
문제 풀이
StringBuilder
-가변한 문자열을 처리하기 위한 클래스
-새로운 문자열을 추가하거나 변경하게 되면 기존의 객체로 추가 및 변경이 가능함
최종 코드
class Solution {
public int solution(String S) {
int answer = 0;
StringBuilder sb = new StringBuilder(S);
int index = 0;
while(index < sb.length() -1){
if(sb.charAt(index) == sb.charAt(index+1)){
sb.delete(index, index+2);
index = Math.max(0, index - 1);
}else{
index++;
}
}
if(sb.length() == 0){
answer = 1;
}else{
answer = 0;
}
return answer;
}
}
문제 3 / FoodBj
-목표 : 짜장면의 그릇 수를 순위로 입력받아 총 상금과 우승자를 문자열로 반환하는 프로그램
최종 코드
import java.util.*;
class Solution {
public String solution(String[] bj, String[] one, String[] two) {
String answer = "";
List<String> BJList = new ArrayList<>(Arrays.asList(bj));
for(String person : one){
BJList.remove(person);
}
for(String person : two){
BJList.remove(person);
}
if(BJList.size() != 1){
return "";
}
String winner = BJList.get(0);
return "1350만원" + "(" + winner + ")";
}
}
문제 4 / AsciiToString
-목표 : Ascii코드를 문자로 치환 후 이어붙여 문자열로 출력
문제 풀이
-StringBuilder를 사용하여 문자열을 조합.
-for문을 통해 arr을 순회하며 ascii값을 문자로 변환하여 추가를 하였다.
최종 코드
class Solution {
public String solution(int[] arr) {
String answer = "";
StringBuilder sb = new StringBuilder();
for(int i=0; i < arr.length; i++){
sb.append((char) arr[i]);
}
return sb.toString();
}
}
문제 5 / Calculator
-목표 : 문자열로 된 계산식을 이용하여 계산 결과를 출력하는 프로그램
문제 풀이
s="-3+26-7"
-문자열에 있는 숫자는 숫자로 변환, 계산식은 +, -로 계산이 가능하게 변환시킴
-변환시킨 문자열을 계산하고 값을 추출
최종 코드
-결괏값과 기댓값이 달라 조금 더 학습한 뒤 다시 풀어 볼 예정이다.
class Solution {
public int solution(String s) {
int answer = 0;
int num = 0;
String operator = "+";
StringBuilder sb = new StringBuilder();
for(char cal : s.toCharArray()){
if(Character.isDigit(cal)){
sb.append(cal);
}else{
if(sb.length() > 0){
num = Integer.parseInt(sb.toString());
sb.setLength(0);
}
if (operator == "+") {
answer += num;
} else if (operator == "-") {
answer -= num;
}
// operator = cal;
}
}
if (sb.length() > 0) {
num = Integer.parseInt(sb.toString());
if (operator == "+") {
answer += num;
} else if (operator == "-") {
answer -= num;
}
}
return answer;
}
}
'코딩테스트' 카테고리의 다른 글
알고리즘 문제풀이 3-2 (0) | 2025.03.18 |
---|---|
알고리즘 문제풀이 3-1 (0) | 2025.03.18 |
알고리즘 문제풀이 2-4 (0) | 2025.03.13 |
알고리즘 문제풀이 2-2 (0) | 2025.03.12 |
알고리즘 문제풀이 2-1 (0) | 2025.03.10 |