본문 바로가기

Algorithm64

[백준] 10828-스택-Java [백준] 10828-스택-Java ❓문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. ❗️스택이란 우선 풀이에 앞서, 스택이란 무엇인지 한번 알아보자. 스택의 사전적 의미로는 ‘쌓다’, ‘더미’라는 뜻을 가지고 있다. Stack은 Jav.. 2023. 7. 9.
[백준] 20920-영단기 암기는 괴로워-Java [백준] 20920-영단기 암기는 괴로워Java ❓문제 정수 N 과 M, N개의 문자열을 입력받는다. 다음과 순서의 조건으로 정렬하여 문자열을 중복없이 출력하라 자주 나오는 단어일수록 앞에 배치한다. 해당 단어의 길이가 길수록 앞에 배치한다. 알파벳 사전 순으로 앞에 있는 단어일수록 앞에배치한다. 🖊️풀이법 Map을 이용하여, Key로 문자열을 , Value로 문자열이 몇번 입력되는지 저장한다. List에 저장한 Map객체를 Map.Entry타입으로 변환 한다. List.sort메서드의 파라미터로 받는 Comparator 인터페이스를 구현한다. 정렬된 List값을 출력한다. 정답 코드 import java.util.*; import java.io.*; public class Main { public st.. 2023. 7. 9.
[백준] 2108-통계학-Java [백준] 2108-통계학-Java ❓문제 N개의 정수를 입력 받아 아래의 값을 하나씩 출력하라. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 최빈값이 여러 개 인 경우 최빈값 중 두번째로 작은 값을 출력한다. 정수의 절대값은 4,000을 넘지 않으며 N의 범위는 1 ≤ N ≤ 500,000 이다. 🖊️풀이법 이번 문제는 최빈값을 제외하고는 간단하게 풀 수 있다. 정수이 절대 값이 4,000을 넘지 않기때문에 카운트정렬을 이용하면 보다 빠르게 풀 수 있다. 절대 값 4000을 기준으로 음수범위, 양수범위를 표현해줄 크기가 800.. 2023. 7. 9.
[백준] 25192-인사성 밝은 곰곰이-Java [백준] 25192-인사성 밝은 곰곰이 Java ❓문제 알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다. ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다. 새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다. 그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다. 채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자! 입력 첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 N 이 주어진다. (1 ≤ N ≤ 100.. 2023. 7. 9.
[백준] 1037번-약수-Java [백준] 1037번-약수-Java ❓문제 첫째 줄에 1과 N을 제외한 N의 진짜 약수의 개수가 주어진다. 둘째 줄에는 진짜 약수들이 주어지며, 입력받은 약수를 가지는 N을 구하라. N 범위 2 ≤ N ≤ 1,000,000 🖊️풀이법 진짜 약수라는 단어에 유의해야한다. 문제에서 말하는 진짜 약수란, 정수 N이 가지는 모든 약수를 말한다. 예를들어, 5 25 를 입력받았다면, N은 50이 아니라, 125이다. 이유는 입력받은 약수를 가지는 최소공배수가 아니기 때문이다. N = 50 일 경우 {1, 2, 5, 10, 25, 50} N = 125 일 경우 {1, 5, 25, 125} 따라서, 해당문제는 입력받은 가장 작은 약수와 가장 큰 약수의 곱을 출력하면 정답이다. 정답 코드 import java.util... 2023. 7. 9.
[백준] 1010번-다리 놓기-Java [백준] 1010번-다리 놓기-Java ❓문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M) 재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사이트 개수만큼 (N개) 다리를 지으려고 한다. 다리끼리는.. 2023. 7. 9.