백준

    백준 10799번 쇠막대기 문제 - JAVA

    https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 받은 괄호 문자열을 하나씩 확인하면서 진행합니다. ()가 되면 레이저 이므로 이번에 들어온 문자가 ')'이고 직전에 들어온 문자가 '('이면 레이저 이므로 '()'이 완성됩니다. '()'인 레이저를 제외하고 이전에 입력된 '('를 더합니다. 이번에 들어온 문자가 ')'이고 직전에 들어온 문자도 ')'이면 '))' 이므로 막대기를 닫는 괄호이므로 막대기 하나가 끝을 봤으니 +1을 해줍니다. '))' 되면서 +..

    백준 4949번 균형잡힌 세상 (JAVA)

    https://www.acmicpc.net/problem/4949 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class No_4949 { public static void main(String[] args) throws IOException { /** * 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다. * * 입력의 종료조건으로 맨 마지막에 점 하나(".")가 들어온다. * * 모든 왼쪽 소괄호("(")는 ..

    백준 1874번 스택 수열 (JAVA)

    https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제에 설명이 조금 부족한 것 같아서 처음에 이해를 잘 못했습니다. 유투브에 검색해서 설명을 듣고 풀어보았습니다. 이 문제에 예제 1을 먼저 설명하겠습니다. 8개의 정수를 입력받았고 4라는 숫자가 첫 번째로 입력되었습니다. 그러면 스택에 1부터 4까지 push 해서 쌓아줍니다. 그 후 4를 pop하여 빼줍니다. 그러..

    백준 10773번: 제로 문제 (JAVA) 스택문제

    https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 스택문제입니다. 힌트를 보시면 입력된 정수를 계속 쌓습니다. 0이 입력이되면 제일 최근에 쌓인 정수를 지웁니다. 그렇게 마지막 까지 남은 숫자들을 모두 더해서 출력하는 문제입니다. 전체 코드입니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ..

    백준 10828번 문제 - 스택 (JAVA)

    https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택은 first in last out으로 블럭 쌓기라고 생각하시면 됩니다. 블럭을 쌓는데 아래부터 차곡차곡 쌓이는 것이라고 보면 됩니다. 반대로 쌓인 블럭을 정리하기 위해서는 위에서 부터 하나하나 빼줘야 합니다. 제가 작성한 코드를 보고 설명드리겠습니다. 전체코드 import java.util.Arrays; import java.util.Scanner; import java.u..

    백준 1181번 단어 정렬 - 자바 스트림 활용

    https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 첫 번째 줄에 n개의 단어를 나타내는 수가 있습니다. 그 수 만큼 단어가 나옵니다. 정렬의 조건은 두 가지 입니다. 1. 길이가 짧은 순서대로 2. 같은 길이는 사전 순서대로 그렇게 정렬해서 출력해주면 됩니다. * 여기서 같은 단어는 하나만 출력하면 됩니다. 해설 코드 import java.util.Comparator; import java.util.HashSet; import java..

    백준 1427번 소트인사이드 - 자바

    https://www.acmicpc.net/problem/1427 난이도는 실버5 로 측정되어 있지만 자바에서 제공하는 라이브러리를 활용하면 아주 쉬운 문제이다. 전체 코드 입력은 Scanner로 받았으며, 입력된 n이라는 숫자의 길이를 쉽게 알아내기 위해 String으로 받았습니다. n의 길이만큼의 Integer 배열을 만들어서 각자리의 숫자들을 하나씩 넣습니다. 그리고 Arrays.sort를 활용해 정렬하는데, 이때 두 번째 인자로 Collections.reverseOrder()를 사용해 내림차순으로 정렬해줍니다. 스캐너를 만들어줍니다. 스캐너로 입력을 받는데, String으로 입력받습니다. Integer형 배열을 선언하고, 입력받은 n에 길이만큼 만들어 줍니다. 만들어진 배열 result만큼 반복하..

    백준 11719번 그대로 출력하기 2 - 자바

    https://www.acmicpc.net/problem/11719 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net 그대로 출력하기 첫 번째와 다른 것은 빈 줄이 주어질 수도 있고, 각줄의 앞 뒤에 공백이 있을 수도 있다. 라는 것입니다. 그 외에는 똑같습니다. 스캐너를 이용해 입력을 받았고, 공백도 문자열로 받기 위해서 nextLine()으로 받았습니다. while 반복문으로 무한반복을 만들어 입력받은 것을 그대로 출력해주었고, 무한반복을 빠져나가기 위한 if문으로 hasNext()가 f..