Queue-ri/Advanced-Algorithm-Study

[Week 6] MORSE self review - hanjuuuuuu

Closed this issue · 0 comments

MORSE self review

1. 해결 시도 과정

모스 신호를 만든 후, k번째 모스 신호를 반환하려고 했습니다.

2. 아이디어

받은 n과 m을 이용해 if문으로 문자열을 이어붙여 모스신호를 만들었습니다.
k번째 모스부호를 출력하는 코드를 아직 작성하지 못했는데,
만약 k가 a+b-1Cb (조합)보다 같거나 작으면 k번째 모스 부호는 장점(-)으로 시작하는 모스 부호 중 하나이고
그렇지 않으면, 단점(o)으로 시작하는 모스부호 중 하나라는 규칙을 발견했습니다.

3. 코드 설명

#include <iostream>
using namespace std;

int C, n, m, k;

void morse(int n, int m, string s) {	// 모스 신호 만들기
	if (n == 0 && m == 0) {
		cout << s << endl;
		return;
	}
	
	//1개 이상 남았을 경우, 
	if (n > 0)
		morse(n - 1, m, s + "-");
	if (m > 0)
		morse(n, m - 1, s + "o");

}

int main() {
	cin >> C;
	while (C--) {
		cin >> n >> m >> k;
		morse(n, m, "");
	}
}

모스신호를 전부 만들었습니다.

4. 막힌 점 및 개선 사항

k번째 모스부호를 아직 반환하지 못하였습니다. 아이디어를 사용해 k번째 모스부호를 효율적으로 얻을 수 있도록 해야할 것 같습니다.