전체 글

게임 만들고 싶어요
1. 문제 상세 https://www.acmicpc.net/problem/1193 2. 문제 접근 대각선을 따라 지그재그 순서로 분수를 확인하여 해당 순서의 분수를 출력하는 것이 문제이다. 이를 참고해서, 대각선을 보고 규칙을 찾아보자. 대각선의 분수들을 보면 i 번째 대각선인 경우 그 대각선에는 i 개의 분수가 있다. 이에 따라 먼저 내가 입력받은 순서가 몇 번째 대각선에 있는지를 확인하자. 이를 확인하기 위해 입력받은 순서 n 에서 i 를 1씩 증가시키며 빼준다. n 이 i 보다 작거나 같아졌다면 i 번째 대각선에 내가 입력받은 순서가 있다는 것이다. 그리고 지그재그 순서이므로 대각선에서 분수들의 순서에도 규칙이 있다. 짝수 i 번 대각선이라고 할 때, 그 대각선 안의 분수는 1/i, 2/i - 1,..
1. 문제 상세 https://www.acmicpc.net/problem/2292 2. 문제 접근 중간부터 원하는 주소의 방까지 몇 개의 방을 거쳐야 하는지 구하자. 이번에는 규칙을 찾고 원하는 결과를 얻었을 때(주소에 도착)반복 횟수를 출력하면 된다. 첫 번째 방을 모두 둘러 쌀 경우 방이 6개 증가한다. 그 다음 다시 방을 모두 둘러 쌀 경우 방이 12개 증가한다. 이렇게 바깥쪽으로 방들이 한 줄 늘어 날 때 마다 방이 6의 배수씩 더해진다. 즉 1 + 6의 배수 작업을 몇 번 반복했을 때 주소값보다 커지는지를 확인하여 반복 횟수를 출력하면 된다. 3. 문제 풀이 #include using namespace std; int main() { int n, i, address = 1; cin >> n; f..
1. 문제 상세 https://www.acmicpc.net/problem/2903 2. 문제 접근 과정에 따른 점의 개수의 규칙을 보면 4, 9, 25, 81, ... 와 같이 2, 3, 5, 9, ... 의 제곱으로 이루어진다. 2, 3, 5, 9 ... 은 각 과정에서 한 변에 위치한 점의 개수들이 된다. 결과적으로 각 과정에서 모든 점의 개수는 한 변의 점 개수의 제곱이 된다. 이제 초기상태부터 과정을 거칠 때 마다 한 변의 점의 개수가 몇 개인지만 알아내면 된다. 처음엔 2개, 과정을 1번 거칠 시 3, 2번은 5, 3번은 9, ... 여기서 증가하는 수를 보면 이전 과정의 한 변의 점 갯수 + (이전 과정의 한 변의 점 갯수 - 1) 이다. 즉 2, 2+(2-1) = 3, 3+3(-1) = 5,..
1. 문제 상세 https://www.acmicpc.net/problem/2720 2. 문제 접근 입력받은 5달러 이하의 금액을 해당 금액에 맞는 개수의 동전으로 바꾸자. (1달러 = 100센트) 거스름돈을 25로 나눈 몫을 출력한다. 그리고 그 몫에 25를 곱한 값을 거스름돈에서 뺀다. 거스름돈을 10으로 나눈 몫을 출력한다. 그리고 그 몫에 10을 곱한 값을 거스름돈에서 뺀다. 거스름돈을 5로 나눈 몫을 출력한다. 그리고 그 몫에 5를 곱한 값을 거스름돈에서 뺀다. 거스름돈을 1로 나눈 몫을 출력한다. 그리고 그 몫에 1을 곱한 값을 거스름돈에서 뺀다. 3. 문제 풀이 #include using namespace std; int main() { int t, c, coin[4] = {25, 10, 5,..
1. 문제 상세 https://www.acmicpc.net/problem/11005 2. 문제 접근 문제 2745번 : 진법 변환 의 반대이다. 이번에는 10진법 숫자와 진법을 입력받아 해당 진법으로 바꿔 출력한다. 예시로 60466175 를 36진법으로 변환하는 방법을 알아보자. 36진법은 한 자리에 0~35까지의 숫자를 사용한다. 9가 넘어가는 숫자는 10 : A, 11 : B, 12 : C 와 같이 알파벳 대문자로 나타낸다. 변환시, 60466175를 36으로 나눈다. 나눈 나머지를 변환 할 36진법 수 맨 뒷자리로 한다. 나머지 값이 35인데, 35는 Z 로 표시하여 마지막 자리는 Z 가 된다. 이렇게 나눈 몫을 다시 36으로 나눈 나머지를 그 앞 자리로 하고, 다시 나누고 자리수를 표시하기를 몫..
1. 문제 상세 https://www.acmicpc.net/problem/2745 2. 문제 접근 먼저 B진법 수 N을 문자열 형태로 입력받자. 조건과 같이 입력받은 문자열에서 문자들을 확인하여 0~9 와 A~Z 의 문자를 숫자로 변환하여 계산하기 위해서 문자들의 아스키코드 값을 활용하자. 문자가 0~9 인 경우, '0' 값을 빼주어 문자에서 숫자 0~9가 되고, A~Z 인 경우 55를 빼주어 A : 10, B : 11, ... Z : 35 가 되도록 한다. 문자열의 총 길이를 구한 후 0부터 문자열의 길이 - 1 까지의 수를 입력받은 B의 지수로 사용한다. B의 0제곱부터 문자열의 길이 - 1제곱의 값과 위의 문자열의 문자를 숫자로 변환한 값을 뒷자리부터 앞으로 순서대로 곱해준다. 그리고 그 값들을 모..
Dry_p
건조한 프로그래밍