[C] 백준 #1547, #1598, #1703
#1547 문제 설명 컵 1번, 2번, 3번이 일렬로 놓여져 있다. 1번 컵 아래 공이 하나 있으며, 공은 움직이지 않는다. 임의의 두 컵을 고른뒤 그 위치를 바꾸려고 한다. 예를 들어 1번,2번 컵을 고르면 1번 컵 위치에 2번컵을, 2번컵 위치에 1번컵을 이동시킨다. 이때 공은 움직이지 않으므로 맨처음 1번컵이 있던 위치에 그대로 있다. 컵의 위치를 총 m번 바꾸고, 위치를 바꾼 방법이 주어지면 이 과정 이후 공이 들어있는 컵의 번호를 구하는 프로그램을 구해야한다. 풀이 과정 처음 문제 이해를 잘못해서 배열로 두고 그 숫자의 위치의 있는 컵들의 자리를 바꿨는데, 그게 아니라 번호가 매겨진 컵들을 바꾸는 거였다; 덕분에 코드가 조금 더러워졌지만 배열은 그대로 유지하고, while문을 통해 바꿀 컵들을 ..
2023. 9. 19.
[C] 백준 #1085, #1267, #1284
#1085 문제 설명 다음은 임의의 점 위에서 사각형의 경계선(모서리)까지 가는 최단거리를 구하는 문제이다. 아래 그림과 같이 x,y,w,h 값이 주어진다. 풀이 과정 한점에서 모서리까지 갈 수 있는 최단거리의 경우는 x, y, w-x, h-y 총 4가지 경우이다. 이 중 가장 짧은 거리가 최단거리라고 할 수 있다. 따라서 최솟값을 구해야한다. 나의 경우 배열에 값을 넣어 이중반복문을 돌려서 최솟값을 구했다. #include int main(){ int x,y,w,h; scanf("%d %d %d %d",&x, &y, &w, &h); //순서대로 입력받기 int num[4]; //num 배열을 생성하여 각 거리값 계산 num[0] = x; num[1] = y; num[2] = w-x; num[3] = h..
2023. 9. 17.
[c] 백준 10870
#10870 더보기 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 브론즈 2단계의 간단한 피보나치 수열 문제이다. 0일때는 0, 1일때는 1, 그외에는 모두 전과 전전수의 합이다. 따라서 재귀함수를 이용하여 0일때는 0을, 1일떄는 1을 리턴하고 그외에는 전과 전전 숫..
2023. 8. 27.