Algorithm
-
백준 2163 - 초콜릿 자르기(JAVA)Algorithm 2022. 10. 5. 19:20
2163번: 초콜릿 자르기 (acmicpc.net) 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 문제는 위와 같다. 상당히 장황하게 뭘 써놓다보니 문제 이해가 잘 안되어서 좀 오랫동안 들여다 보았던 것 같다. 예를 들어서 생각해보면 너무 간단해서 당황할 정도 였다. 이런 초콜릿이 있다고 생각해보자. 가로는 4, 세로는 3 이라 할 때, 세로를 먼저 잘라보면 2번 자르게 된다. 그렇다면 가로는 어떻게 될까? 이미 2번 잘라서 3개로 잘려진 곳에서 3번을 자르면 되니 3*3 = 9, 총 9번을 자르면 된..
-
백준 9506 - 약수들의 합(JAVA)Algorithm 2022. 10. 3. 17:35
9506번: 약수들의 합 (acmicpc.net) 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net 문제는 백준 9506번 약수들의 합이다. 브론즈 1 문제인데 생각보다 백준에서 정답이 잘 안나와 매우 화가 났었던 문제이다. 문제의 알고리즘은 매우 간단하다. 그냥 입력받은 수로 완전수를 찾고, 완전수면 필요한 형태로 적어주고, 아니면 아니라고 출력해주면 끝이다. ※ 알고리즘 1. 반복문안에서 n이라는 수를 입력받는다. 2. 약수를 구하는 방식으로 for문 안에서 입력받은 수를 나누었을 때 나머지가 0이면..
-
백준 2609 - 최대공약수와 최소공배수(JAVA)Algorithm 2022. 10. 2. 14:53
2609번: 최대공약수와 최소공배수 (acmicpc.net) 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 문제는 엄청나게 쉽다. 그냥 두 개의 숫자를 입력받고 그 숫자들의 최대공약수와 최소공배수를 구하면 된다. 최대공약수를 구하는 알고리즘을 유클리드 호제법이 쉽다는 것을 알고 있으면 정말 순식간에 문제를 해결 할 수 있게 된다. ※ 최대공약수 알고리즘 - GCD 재귀로 구현 - G(a, b) = G(b, r) (단, r = amodb) -> 유클리드 호제법 - b가 0일 때 나눌 수 없으므로 미리 b가 0이면 a로 출력시켜 줄 수 있도록 처리해주어야 Arithmetic e..
-
백준 2563 - 색종이(JAVA)Algorithm 2022. 10. 2. 14:19
2563번: 색종이 (acmicpc.net) 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 처음 이 문제를 보면 잘 이해가 안 된다. 하지만 입력 예시를 보면 생각보다 간단하게 이해가 된다. 위에서 설명한 문제 그림 그래도를 입력받고 출력시키기 때문이다. ※ 알고리즘 1. 입력 받는 수(반복 갯수) 2. 도화지를 표현할 이차원 배열 arr 3. StringTokenizer로 한 칸이 띄워진 입력(왼쪽 하단 모서리 좌표값)을 입력 받는다. 4. 입력 받은 모서리 좌표값에서 10씩 더하면 사각형의 넓이이므로 이중 ..
-
백준 2775 - 부녀회장이 될테야(JAVA)Algorithm 2022. 9. 28. 20:45
2775번: 부녀회장이 될테야 (acmicpc.net) 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 이번주 study에서 정한 5번째 문제를 풀어보았다. 이 문제는 문제상으로 보면 엄청 간단한데 뭔가 자꾸 읽다보면 재귀를 쓰는 건가 하는 느낌도 든다. 일단 가장 먼저 떠오른건 k층 n호라는 걸 이차원 배열로 나타내면 어떨까? 하는 것이었다. 알고리즘을 구할 때 단순히 머릿속으로만 생각하면 도저히 답이 안나와서 입력 예시 뿐만 아니라 다른 예시들까지도 적어보면서 풀어보았다. ex) 1층 3호 0층 1호 + 0층 2호 + 0층 3호 = 1층 2호 +..
-
백준 10769 - 행복한지 슬픈지(JAVA)Algorithm 2022. 9. 28. 11:25
10769번: 행복한지 슬픈지 (acmicpc.net) 10769번: 행복한지 슬픈지 승엽이는 자신의 감정을 표현하기 위해서 종종 문자 메시지에 이모티콘을 넣어 보내곤 한다. 승엽이가 보내는 이모티콘은 세 개의 문자가 붙어있는 구조로 이루어져 있으며, 행복한 얼굴을 나 www.acmicpc.net 오늘은 백준 10769번 행복한지 슬픈지 문제를 풀어보았다. 정말 딱 브론즈 정도의 문제였다. 지난 번 팀 이름 정하기와 이게 어떻게 같은 티어에 있는지 좀 이해가 안 되긴 하지만 일단은 문제를 풀어보자. ※ 알고리즘 1. 입력 방식이 String 형 이기 때문에 그냥 readLine()으로 입력받을 수 있다. 2. happy 이모티콘과 sad 이모티콘의 count를 세어주는 변수를 만든다. 3. happy와 ..
-
백준 1296 - 팀 이름 정하기(JAVA)Algorithm 2022. 9. 27. 09:52
1296번: 팀 이름 정하기 (acmicpc.net) 1296번: 팀 이름 정하기 연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다. 이환 www.acmicpc.net 오늘 풀어본 문제는 백준 1296번 팀 이름 정하기 문제이다. 브론즈 1 치고는 변수가 상당히 복잡하다. 변수가 생각보다 많이 등장해서 꽤나 당황 스러웠다. 일단, 연두 이름 변수, 몇 개의 팀을 입력받을지 정하는 N 변수, 팀 이름을 담을 배열 변수, 우승 확률을 담을 배열 변수 이정도가 큼지막한 변수들이다. 이제 내가 생각한 알고리즘을 소개하겠다. ※ 알고리즘 1. 연두 이름 변수, 몇 개의 팀을 입력받을지 ..
-
백준 11050 - 이항 계수1(JAVA)Algorithm 2022. 9. 25. 14:20
11050번: 이항 계수 1 (acmicpc.net) 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이 문제는 사실 수학 문제이다. 이항 계수가 무엇인지 알면 그냥 사실상 바로 풀 수 있는 기본적인 문제이다. 문제에 등장하는 이항계수는 N! / (K! * (N-K)!) 으로 정의 할 수 있다. ※ 알고리즘 1. 이항 계수가 무엇인지 파악한다. 2. 숫자를 입력받고 위와 같이 result 변수를 정의한다. 3. 팩토리얼 함수를 재귀함수로 구현한다. 이처럼 만들 수 있었다. Factorial 함수만 재귀적으로 잘 구현할 수 있다면 굉장히 쉽게 풀 수 있는 문제였다고 생각한다.