본문 바로가기

알고리즘49

[알고리즘 문제] 369 (Python / 파이썬) 문제 유니는 지니와 369 게임을 하고 있다. 369 게임은 유니가 처음에 1을 부르고, 지니가 2, 유니가 3, 지니가 4, ... 처럼 번갈아가며 자연수를 순서대로 부르면서 진행 된다. 단, 3, 6, 9가 들어간 수는 수를 부르지 않고 그 수에 3, 6, 9가 등장한 횟수만큼 박수를 쳐야 한다. 예를 들어 3, 6, 9, 13, 23 등은 박수를 한 번 쳐야 하고, 33, 63, 3322는 박수를 두 번, 9999는 박수를 네 번 쳐야 한다. 자연수 N이 주어질 때 유니와 지니가 부르는 수와 박수를 출력하는 프로그램을 작성하시오. 수를 부른다면 그 수를 출력하고, 박수를 친다면 를 박수의 횟수만큼 출력한다. 만약 세 번의 박수를 친다면 ___ 처럼 를 세 개 붙여서 출력한다. 입력 첫째 줄에 N이 .. 2022. 5. 11.
[알고리즘 문제] division (Python / 파이썬) 문제 임의의 자연수는 그보다 작은 자연수들의 합으로 표현될 수 있다. 예를 들어 4의 경우, 4= 3+1= 2+2= 2+1+1= 1+1+1+1 위와 같은 방법으로 표현 될 수 있다. 이 때 , 숫자의 구성이 같으면서 그 순서만이 다른 경우는 같은 경우로 생각하는데, 예를 들어 다음 세 가지 경우는 모두 같은 경우이다. 2 + 1 + 1, 1 + 2 + 1 , 1 + 1 + 2 자연수 n을 입력 받아 이를 n보다 작은 자연수들의 합으로 나타내는 방법을 모두 출력하는 프로그램을 재귀 호출을 사용하여 작성하시오. 입력 첫 줄에 2 이상 20 이하의 자연수 n이 주어진다. 출력 첫째 줄부터 모든 방법을 한 줄에 하나씩 출력한다. 하나의 식 안에는 큰 숫자가 앞으로 오도록 하고, 전체적으로는 앞의 숫자가 큰 식이.. 2022. 5. 11.
[알고리즘 문제] 순열 구하기 (Python / 파이썬) 문제 서로 다른 n개의 원소들 중에서 r개만을 뽑아 일렬로 나열하는 것을 순열이라 한다. 예를 들어, 3개의 원소 a, b, c 중에서 2개만을 뽑아 나열하면 ab, ac, ba, bc, ca, cb 의 6가지 경우가 있다. n과 r이 주어질 때, n개의 소문자 중에서 r개만을 뽑아 나열하는 모든 경우를 출력하는 프로그램을 작성하시오. 단, a부터 시작하여 연속으로 n개의 알파벳을 갖고 있다고 하자. 입력 첫 번째 줄에 n과 r이 주어진다. ( 1 ≤ n ≤ 10, 0 ≤ r ≤ min(n, 7) ) 출력 각 줄에 n개의 소문자 중에서 r개만을 뽑아 나열하는 경우를 사전순으로 나열한 결과를 출력한다. 문제 풀이 n개의 소문자 중에서 r개만을 뽑는데 이때 중복이 없어야 합니다. 따라서 check 배열을 따.. 2022. 5. 11.
[알고리즘 문제] mountain (Python / 파이썬) 문제 봉우리가 여러개인 산 모양을 출력한다. 산 모양은 그림과 같고 좌우 대칭이다. 입력 첫 번째 줄에 숫자를 입력 받는다. 숫자의 크기는 20보다 작은 자연수이다. 출력 출력 예의 형식으로 출력한다. 문제 풀이 문제의 예시를 보면 입력이 3일 때 1213121 입력이 5일 때 1213121412131215121312141213121 다음과 같이 출력되는 것을 알 수 있습니다. 그림을 그려보면 재귀 함수로 문제를 해결할 수 있다는 것을 쉽게 알 수 있습니다. 1이 될 때까지 원소가 작아지며 재귀함수 recur(n - 1)을 실행합니다. 1을 출력하고 다시 원래의 위치로 return 되는데, 이때 다시 recur(n - 1)을 실행해 다시 1이 될 때까지 재귀함수를 실행해줍니다. 그러면 n이 3일 때 1 .. 2022. 5. 10.