본문 바로가기

전체 글45

[BOJ] [JAVA] 11866번 요세푸스 문제0 Queue 큐 자료구조를 처음 배웠다. 이번 문제를 풀면서 큐를 이렇게 쓸 수 있구나 하는게 신기해서 적어본다. https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 문제에서는 원순열을 만들고, 원순열의 원소를 규칙대로 제거하면서, 제거된 원소 순서대로 출력하라고 한다. 이 원순열을 큐 자료 구조로 구현할 수 있다. 큐의 가장 앞 원소를 저장하고, 제거한 후 저장된 원소를 큐의 가장 뒤에 집어넣음으로 원순열이 구현된다.(신기하다 ㅋㅋ) import java.util.*; public class Main { public static v.. 2024. 1. 10.
[BOJ] [JAVA] 9012번 괄호 드디어 stack 자료 구조를 배우고 이 문제를 다시 풀었다! 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 입력된 String의 i번째 character가 ')' 인 경우 : stack에 아무것도 남아있지 않는 상태인 경우 곧바로 VPS가 아님을 알 수 있다. (만약 stack에 무언가가 남아있다면 그것은 반드시 '('일 것이다!) 입력된 String의 i번째 character가 '(' 인 경우 : 다음에 오는 것이 ')'라면 ()가 만나기 때문에 pop되어 사라진다. 반대로.. 2024. 1. 7.
[BOJ] [JAVA] 4134번 다음 소수 4134번: 다음 소수 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. www.acmicpc.net 자연수 n 이하의 소수의 개수를 찾는 문제를 에라토스테네스의 체를 이용하여 푼 적이 있다. [Programmers][Python] 소수 찾기 1. 시간 초과 n 이하의 소수 개수를 찾는 문제이다. n이 1000000 이하의 자연수라 처음 한 방법은 시간초과가 났다. list를 계속 만들어서 그런가? def solution(n): prime = list(range(2, n + 1)) for i in range(2, n + hiparsley.tistory.com 이번 문제는 주어진 수 n보다 크거나 같은 수 중 가장 작은 소수를 찾는 문제이다. n.. 2024. 1. 7.
[BOJ] [JAVA] 13241번 최소공배수 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다 www.acmicpc.net 입력된 두 수의 최소공배수를 구하는 문제이다. 두 수 a, b에 대해 최대공약수 * 최소공배수 = a * b가 성립함을 이용했다. 최대공약수는 유클리드 호제법을 이용하여 구할 수 있다. (스테인 알고리즘도 있다고 한다) import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = ne.. 2024. 1. 6.
[BOJ] [JAVA] 10816번 숫자 카드 2 두번째 숫자 카드 문제다. 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 이 문제에서는 HashMap의 또다른 사용 법을 알 수 있었다..! HashMap은 key값을 검색했을 때 존재하지 않는 key라면 null을 반환한다. 이 점을 이용해서 cardMap에 카드의 개수가 바로바로 value값으로 입력되도록 했다. 이 후 key를 검색해서 value(동일한 수를 가진 카드의 개수)를 출력했다. import java.util.*; import java.io.*; public.. 2024. 1. 6.