전체 글 31

10250번, 2910번(해시 맵), 4949번(스택)

10250번 나머지와 몫을 활용하는 문제로 나머지가 0이 될 때만 주의해주면 된다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test = Integer.parseInt(br.readLine()); StringBuilder sb = new ..

2470번(투 포인터), 5568번(조합)

2470번 투 포인터 알고리즘은 1차원 배열에서 두 개의 포인터를 조작하여 원하는 결과를 얻는 형태이다 1. 2개의 포인터의 시작점이 배열의 시작점인 경우 > 포인터 2개가 같은 방향으로 진행된다 2. 2개의 포인터가 각각 배열의 시작점과 끝점에 위치한 경우 > 포인터 2개가 양 끝에서 시작하여 반대로 진행된다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Solution { public static void main(String[] args) throws I..

18115번(덱), 2798번, 1929번(소수)

18115번 수열 A를 뒤집어서 풀이하면 된다 1번 > 2번 > 3번 > 3번 > 2번 순서로 기술을 실행 1. deque의 맨 앞에 1을 집어 넣음 2. deque의 맨 앞에 있는 1을 잠시 버리고 앞에 2를 집어 넣은 후 다시 맨 앞에 1을 넣는다 3. deque의 맨 뒤에 숫자 3을 넣는다 4. deque의 맨 뒤에 숫자 4를 넣는다 5. deque의 맨 앞에 있는 1을 잠시 버리고 앞에 5를 집어 넣은 후 다시 맨 앞에 1을 넣는다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Solution { public static..

10799번(스택), 10816번(이진 탐색), 2805번(이진 탐색)

10799번 스택을 응용한 문제이다 괄호들의 묶음을 문자열 한 줄로 입력 받은 후 이를 하나씩 쪼개 문자열 배열로 만든다 for문을 돌며 배열에서 "("이 나오면 스택에 push ")"이 나올 경우 스택에서 pop 만약 ")"의 앞이 "("였다면 여는 괄호와 닫는 괄호의 인접한 쌍이므로 레이저이다 만약 ")"의 앞이 ")"였다면 쇠막대기가 끝났다는 의미이다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Solution { public static void main(String[] args) throws IOException { ..

10866번(덱), 9012번(스택), 1764번

10866번 덱의 기본 개념을 묻는 문제이다 여기서 주의해야할 점은 어제와 풀었던 문제와 마찬가지로 명령어를 push_back X와 push_front X인 문자열로 받았을 때 이를 공백을 기준으로 문자열과 숫자로 분리시켜야 한다는 것이다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Deque; public class Practice { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRe..

10818번(스택), 18866번(큐), 1654번(이진 탐색)

10818번 스택의 개념에 대해 확인하는 문제이다 주어지는 명령어를 문자열로 받은 후 이것이 제시된 명령어와 동일한지 비교하여 동일한 경우 명령을 수행하도록 한다 가장 중요한 점은 push 명령어는 push + 숫자로 구성되어 있으므로 공백을 기준으로 나눠서 생각해줘야 한다. 현재 숫자는 문자열이기 때문에 정수형으로 변환이 필요하다 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Practice { public static void main(String[] args) throws IOException { BufferedRe..

1966번(큐), 1010번(조합), 1789번

1966번 큐는 먼저 들어간 자료가 가장 먼저 나오는 구조 Enque: 큐 맨 뒤에 데이터가 추가되는 것 Deque: 큐 맨 앞쪽의 데이터를 삭제하는 것 큐는 연결 리스트를 활용하여 생성 poll() - 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환하고, 해당 요소를 큐에서 제거, 큐 비어있으면 false 반환 remove() - 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 제거, 큐가 비어 있으면 예외 발생 peek() - 해당 큐의 맨 앞에 있는(제일 먼저 저장된) 요소를 반환, 없으면 null 반환 offer() - 해당 큐의 맨 뒤에 전달된 요소를 삽입, 만약 삽입에 실패하면 false 반환 add() - 해당 큐의 맨 뒤에 전달된 요소를 삽입, 만약 삽입에 성공하면 true를 ..

10815번 (이진 탐색), 1874번 (스택), 11650번 (정렬)

10815번 인텔리제이에서는 잘 돌아갔는데 시간 초과 떠서 틀렸다ㅎ... 찾아보니까 이진 탐색 사용해야 한다고 함 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Practice { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.parseIn..

2751번, 2231번, 1110번, 1181번, 1436번, 10814번

2751번 반복문을 통해 num개의 입력값들을 list로 넣어준다 Collections.sort() 메서드를 사용하여 해당 list를 오름차순으로 정렬 처음엔 배열을 사용해서 Arrays.sort() 사용 했는데 시간 초과 떴다 import java.util.*; public class Practice { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder sb = new StringBuilder(); int num = sc.nextInt(); List list = new ArrayList(); for(int i = 0; i

14954번, 15649번, 15650번, 15651번, 15625번

14954번 기초 수학 연습 문제 4번과 유사한 문제이다 (자세한 풀이는 그쪽에 적어둠) import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Practice { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int number = sc.nextInt(); System.out.println(isHappy(number) ? "HAPPY" : "UNHAPPY"); } public static boolean isHappy (int number) { Set set = new HashSet(); while(set.add(..