PS(Java)

    [PS] 인프런 강의 - Stack & Queue 4. 후위식 연산(postfix)

    문제 후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요. 만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다. ▣ 입력설명 첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다. 식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다. ▣ 출력설명 연산한 결과를 출력합니다. ▣ 입력예제 1 352+*9- ▣ 출력예제 1 12 풀이 후위식 연산은 일반 연산과 달리 연산자가 숫자 뒤에 붙는 식이다. 예를 들어 2+3 이 23+ 로 표현된다. 스택 pop을 할때 뒤에있는 숫자가 먼저 나오기 때문에 절댓값 처리를 해줘야 한다~ 코드 import java.util.LinkedList; import java.util.Queue;..

    [PS] 인프런 강의 - Stack & Queue 3. 크레인 인형뽑기(카카오)

    [PS] 인프런 강의 - Stack & Queue 3. 크레인 인형뽑기(카카오)

    문제 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 ..

    [PS] 인프런 강의 - Stack & Queue 2. 괄호문자제거

    문제 입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. ▣ 출력설명 남은 문자만 출력한다. ▣ 입력예제 1 (A(BC)D)EF(G(H)(IJ)K)LM(N) ▣ 출력예제 1 EFLM 풀이 앞서 푼 문제와 비슷하다. 그나저나 while문을 그냥 while(stack.pop() != '('); 이렇게 써도 되는 구나... 대괄호 쓰고 내용이 비어서 당황했는데. 새로운 걸 알았다. 코드 import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] ..

    [PS] 인프런 강의 - Stack & Queue 1. 올바른 괄호

    문제 괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. ▣ 입력설명 첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다. ▣ 출력설명 첫 번째 줄에 YES, NO를 출력한다. ▣ 입력예제 1 (()(()))(() ▣ 출력예제 1 NO 풀이 스택을 사용해서 풀면 된다~ 여는 괄호만 스택에 저장하고, 닫는 괄호일 경우는 pop한다. 이렇게 하면 닫는 괄호가 더 많은 경우를 거를 수 있지만 여는 괄호가 더 많은 경우는 따로 체크해줘야 한다. 코드 import java.util.Scanner; import java.util.Stack; public class M..

    [PS] 인프런 강의 - HashMap, HashSet, TreeSet 5. K번째 큰 수

    문제 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값은 22입니다. ▣ 입력설명 첫 줄에 자연수 N(3

    [PS] 인프런 강의 - HashMap, HashSet, TreeSet 4. 모든 아나그램 찾기(해쉬, 투포인터, 슬라이딩 윈도우)

    문제 S문자열에서 T문자열과 아나그램이 되는 S의 부분문자열의 개수를 구하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다. 부분문자열은 연속된 문자열이어야 합니다. ▣ 입력설명 첫 줄에 첫 번째 S문자열이 입력되고, 두 번째 줄에 T문자열이 입력됩니다. S문자열의 길이는 10,000을 넘지 않으며, T문자열은 S문자열보다 길이가 작거나 같습니다. ▣ 출력설명 S단어에 T문자열과 아나그램이 되는 부분문자열의 개수를 출력합니다. ▣ 입력예제 1 bacaAacba abc ▣ 출력예제 1 3 출력설명: {bac}, {acb}, {cba} 3개의 부분문자열이 "abc"문자열과 아나그램입니다. ▣ 입력예제 2 bacaAacbaa abca ▣ 출력예제 2 3 풀이 앞에서 푼 문제 아나그램 + 매출액 ..

    [PS] 인프런 강의 - HashMap, HashSet, TreeSet 3. 매출액의 종류

    문제 현수의 아빠는 제과점을 운영합니다. 현수아빠는 현수에게 N일 동안의 매출기록을 주고 연속된 K일 동안의 매출액의 종류를 각 구간별로 구하라고 했습니다. 만약 N=7이고 7일 간의 매출기록이 아래와 같고, 이때 K=4이면 20 12 20 10 23 17 10 각 연속 4일간의 구간의 매출종류는 첫 번째 구간은 [20, 12, 20, 10]는 매출액의 종류가 20, 12, 10으로 3이다. 두 번째 구간은 [12, 20, 10, 23]는 매출액의 종류가 4이다. 세 번째 구간은 [20, 10, 23, 17]는 매출액의 종류가 4이다. 네 번째 구간은 [10, 23, 17, 10]는 매출액의 종류가 3이다. N일간의 매출기록과 연속구간의 길이 K가 주어지면 첫 번째 구간부터 각 구간별 매출액의 종류를 출..