전체 글

https://www.acmicpc.net/problem/9506 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net -1 이 나오면 무한 루프를 빠져 나올 수 있게 설정한다. 모든 수의 약수는 1을 포함하니 sum = 1 로 먼저 초기화 해주고, for 문은 2부터 num 까지 반복한다. 만약, 약수를 찾았다면 sum 에 더해주고, StringBuilder 에 append 해준다. (마지막에 출력할 때, 약수들을 다시 불러와야 한다. 완전수임을 찾은 다음에 다시 약수들을 각각 구하는 것보다는 약수를 찾을..
https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 간단하다. for 문을 통해 N 의 약수를 구하고, 약수를 찾을 때 마다 count 를 하나 씩 늘린다. 이때, count 가 K 와 일치하는 순간의 약수를 출력한다. 만약 약수의 개수가 K 보다 작다면, count == K 라는 조건문에 걸리지 않아서 for 문을 그냥 빠져나올 것이다. 그래서 빠져나오는 경우를 대비해 마지막에 0 을 출력해준다. import java.io.*; import java.util.StringTokenizer; public class Main..
https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 두 수를 입력받고, 두 수의 관계가 약수인지, 배수인지, 둘 다 아닌지 판별하는 문제이다. moduler 연산(%) 을 이용하면 간단하게 풀리는 문제이다. 두 수(num1, num2) 를 받았을 때, % 연산을 한 결과가 0 이라면, 두 수는 약수 혹은 배수의 관계이고, 0이 아니라면 약수와 배수가 모두 아닌 관계이다. 약수와 배수의 차이는 num1 과 num2 의 크기차이로 알 수 있다. num1 이 num2 보다 작으면, 약수(fact..
https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net (이미지는 화질이 너무 깨져서 첨부 못함) 문자열을 입력받고 명령에 따라 문자열을 편집하는 문제이다. 우선 나는 String의 substring()을 이용하여 문제를 풀었다. 코드를 보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTo..
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과 같이 n이 8이 나왔다고 가정하자. 입력 스택 결과 수열 출력 8 stack = {} result = {} 4 stack = {1} result = {} +(push) stack = {1, 2}..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 처음에는 여는 괄호의 개수와 닫는 괄호의 개수가 같으면 올바른 괄호 문자열인줄 알았다. 코드를 보자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] arg..
https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 스택의 FILO을 이용하여 순서를 뒤집을 수 있으니 이를 이용했다. 문자를 읽어들이다가 공백을 만나면 읽어들이는것을 멈추고, 스택을 top에서 부터 출력한다. 자세한 내용은 코드를 보며 이해하자. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택 자료구조를 만드는 문제이다. 자바에 원래 존재하는 Stack을 이용하지 않고 배열과 메소드를 이용해서 구현해보겠다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main ..
건대다니는 컴공생
Hello World! Hello Konkuk!