5.4. 후위식 연산(postfix) 문제 후위연산식이 주어지면 연산한 결과를 출력하라 입력 352+*9- 출력 12 풀이 후위식(postfix)이란? - 피연산자를 먼저 표시하고 연산자를 나중에 표시하는 방법 - 컴파일러가 사용하는 것으로 스택을 사용하는 예들 중 가장 빈번하게 등장 - ex) 3*(5+2)-9를 후위연산식으로 표현하면 → 352+*9- 로 표현되며 결과는 12이다. 첫 번째 풀이 public int solution(String str) { int answer = 0; Stack stack = new Stack(); // 0 : 48 ~ 9 : 57 for (char x : str.toCharArray()) { if ((int) x >= 48 && (int) x = 48 && (int)..
5. 3. 크레인 인형뽑기(카카오) 문제 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 ..
5.2. 괄호문자제거 문제 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성 입력 (A(BC)D)EF(G(H)(IJ)K)LM(N) 출력 EFLM 풀이 import java.util.*; public class Main { public String solution(String str) { String answer = ""; Stack stack = new Stack(); for (char x : str.toCharArray()) { if (x == ')') { while (stack.pop() != '(') ; } else stack.push(x); } for (int i = 0; i < stack.size(); i++) { answer += sta..
5.1. 올바른 괄호 문제 입력된 괄호가 올바른 괄호이면 “YES", 올바르지 않으면 ”NO" 출력 (())() 는 괄호의 쌍이 올바르게 위치하는 것, (()()))은 올바른 괄호가 아님. 입력 (()(()))(() 출력 NO 풀이 import java.util.*; public class Main { public String solution(String str) { String answer = "YES"; Stack stack = new Stack(); for(char c : str.toCharArray()) { if(c == '(') stack.push(c); else { if(stack.isEmpty()) return "NO"; // 닫는 괄호가 더 많을 경우 stack.pop(); // 상단의 문..
https://inf.run/SgLm1 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 강의 - 인프런 자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성 www.inflearn.com
문제 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요. 풀이 import java.util.Scanner; public class Main { public String[] solution(String[] words) { String[] answer = new String[words.length]; int idx = 0; for(String word : words) { String reverseWord = ""; for(int i=word.length()-1; i>= 0; i--) { reverseWord += word.charAt(i); } answer[idx] = reverseWord; idx++; } return answer; } public static void main(St..
문제 한 개의 문장에서 가장 긴 단어를 출력하는 프로그램을 작성하세요. 문장속의 각 단어는 공백으로 구분 풀이 import java.util.Scanner; public class Main { public String solution(String s) { String answer = ""; String[] words = s.split(" "); int[] wordLength = new int[words.length]; int max = 0, maxIdx = 0; for(int i=0; i max) { max = words[i].length(); maxIdx = i; } // wordLength[i] = words[i].length(); } return words[maxIdx]; } public stati..
문제 대소문자가 섞인 문자열을 대문자는 소문자로, 소문자는 대문자로 변환하여 출력하세요. 풀이 import java.util.Scanner; public class Main { public String solution(String s) { String answer = ""; for(char c : s.toCharArray()) { if(c >= 65 && c = 97 && c