본문 바로가기

수학5

[BOJ] 2839. 설탕 배달 (Java) www.acmicpc.net/problem/2839 (level: Bronze I) 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 작년에 단순하게 접근했다가 런타임 에러 난 이후로 그냥 방치해뒀었는데, 새로운 마음으로 다시 풀어보았다. 분류는 그리디로 되어있는데 나는 수학적으로 접근해서(나머지를 이용해 규칙을 찾아냄,,😂) 결국 성공하긴 했다. 그리디로 푸는 방법은 잘 생각이 안 난다. 아니, 그전에 일단 3과 5라는 숫자를 이용하려면 서로 배수관계가 아니기 때문에 이전에 풀었던 동전이나 거스름돈 문제들처럼 가장 큰 .. 2021. 5. 5.
[BOJ] 2740. 행렬 곱셈 (Java) 문제 링크 / level: Bronze I https://www.acmicpc.net/problem/2740 2740번: 행렬 곱셈 첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개 www.acmicpc.net 내가 생각한 풀이 고등학교, 대학교 때 많이 계산했던 행렬의 곱셈 연산에 관한 문제였다. 그런데 간단한 규칙에 비해 코드로 구현하는데 생각보다 어려움이 좀 있었다.🤔💦 일단 행렬의 곱셈을 위한 조건을 알아보자. 첫 번째 행렬(first)의 크기: N * M 두 번째 행렬(second)의 크기: M * K 1. 이 중 M의 값이 반드시 같.. 2020. 5. 28.
[알고리즘 이론] 순열과 조합, 그리고 중복순열과 중복조합 순열과 조합, 그리고 중복순열과 중복조합은 알고리즘 문제풀이에서 매우 자주 이용되고, 또 백트래킹이니 DFS니 어쩌구 저쩌구로 이어지는 것들이다. 그래서 코드로 구현하는 것까지는 다음에 하고, 오늘은 이론적인 내용을 예시와 함께 살짝 정리해두려고 한다. 우선 순열과 조합부터 이야기해보자. 이 둘은 중복을 허용하지 않으므로 모두 다른 숫자가 나온다는 공통점이 있다. 순열: 중복을 허용하지 않음. 순서가 의미 있음. 조합: 중복을 허용하지 않음. 순서가 의미 없음. 그리고 순서가 유의미한지의 여부가 둘의 가장 큰 차이다. 가령 주사위를 3번 던진다고 할 때 순열은 1 2 3 1 3 2 이 두 가지가 모두 나올 수 있다. 중복을 허용하지 않으므로 모두 다른 숫자가 나왔고, 순열은 순서가 유의미하므로 [1, 2.. 2020. 5. 25.
[BOJ] 1110. 더하기 사이클 (Java) 문제 링크 / level: Bronze I https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 내가 생각한 풀이 간단한 문제인데 자릿수 이야기가 있어서 문자열로 할까 숫자로 할까 고민하다가 브론즈 문제라서 그냥 간단하게 숫자로 풀었다. 자릿수는 나눗셈과 모듈러 연산으로 처리해줌. 몇 가지 포인트는, 1. 연산하려는 숫자가 한 자릿수일 때와 두 자릿수일 때로 나눠서 처리하는 것 2. 덧셈 연산 한 번 할 때마다 카운트(cnt)도 하나씩.. 2020. 5. 23.
[BOJ] 14681. 사분면 고르기 (Java) 문제 링크 / level: Bronze IV https://www.acmicpc.net/problem/14681 14681번: 사분면 고르기 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌 www.acmicpc.net 내가 생각한 풀이 x좌표와 y좌표를 입력받은 뒤 두 좌표의 값을 곱한다. 곱해서 양수가 나온다면 (+,+) 또는 (-,-) 조합이니까 x좌표의 값만 검사해서 양수면 1사분면, 음수면 3사분면으로 처리. 곱해서 음수가 나온다면 (-,+) 또는 (+,-) 조합이니까 이번에도 x좌표의 값만 검사해서 음수면 2사분면, 양수면 4사분면으로 .. 2020. 5. 23.