1062번 - 가르침
a, c, i, n, t 5개를 제외하고
21개 중 K-5개를 뽑는 모든 경우의 수에 대해서
읽을 수 있는 단어의 수를 세서 그 중 최댓값을 취하는 방식으로 구현했는데요
21개 중 K-5개를 뽑는 모든 경우의 수는
단순하게 재귀호출로 구현했고
함수 호출 과정 도중에 현재 뽑은 알파벳의 정보는
매개변수인 int check에 비트마스킹 형식으로 담았습니다.
(abc 배열에 제외할 알파벳들 제외한
21개의 알파벳들을 넣어놓고(인덱스 0~20)
해당 인덱스로 알파벳을 뽑았는지 안뽑았는지를 판별)
ex) check & (1 << 3) != 0 이면, abc[3]인 'f'를 뽑은 상태.
코드가 좀 난잡하긴 한데(ㅠㅠ) 도와주시면 감사하겠습니다.
처음에 단어들 n개 입력받을 때
getline(cin, str);
로 받았었는데
cin >> str;
로 변경하니까 바로 해결됐습니다
(...)
댓글을 작성하려면 로그인해야 합니다.
amjong 5년 전
a, c, i, n, t 5개를 제외하고
21개 중 K-5개를 뽑는 모든 경우의 수에 대해서
읽을 수 있는 단어의 수를 세서 그 중 최댓값을 취하는 방식으로 구현했는데요
21개 중 K-5개를 뽑는 모든 경우의 수는
단순하게 재귀호출로 구현했고
함수 호출 과정 도중에 현재 뽑은 알파벳의 정보는
매개변수인 int check에 비트마스킹 형식으로 담았습니다.
(abc 배열에 제외할 알파벳들 제외한
21개의 알파벳들을 넣어놓고(인덱스 0~20)
해당 인덱스로 알파벳을 뽑았는지 안뽑았는지를 판별)
ex) check & (1 << 3) != 0 이면, abc[3]인 'f'를 뽑은 상태.
코드가 좀 난잡하긴 한데(ㅠㅠ) 도와주시면 감사하겠습니다.