16. 중간 난이도 연습문제
16.20 T9
- 과거의 핸드폰에서는 문자 입력을 돕기 위해 각 숫자에 0~4개의 알파벳을 대응시켰다. 이에 따라 어떤 수열이 주어지면 그 수열에 대응되는 단어 리스트를 만들 수 있었다. 유효한 단어 리스트(여러분이 원하는 방식으로 자료구조가 주어진다)와 어떤 수열이 주어졌을 때, 해당 수열에 매핑되는 단어 리스트를 출력하는 알고리즘을 작성하라. 각 숫자에 대응되는 알파벳은 다음과 같다.
1 |
2 (abc) |
3 (def) |
4 (ghi) |
5 (jkl) |
6 (mno) |
7 (pqrs) |
8 (tuv) |
9 (wxyz) |
|
0 |
|
16.21 합의 교환
- 정수형 배열 두 개가 주어졌을 떄, 각 배열에서 원소를 하나씩 교환해서 두 배열의 합이 같아지게 만들라.
16.22 랭턴 개미
- 검은색과 하얀색 셀(cell)로 이루어진 격자판이 무한히 펼쳐져 있고 여기 어딘가에 개미 한 마리가 기어다니고 있다. 이 개미는 오른쪽을 바라보고 있고, 다음과 같이 움직인다.
(1) 하얀색 셀에선 이 셀의 색깔을 검은색으로 바꾸고 오른쪽(시계방향)으로 90도 방향을 튼 뒤 한 칸 앞으로 나아간다.
(2) 검은색 셀에선 이 셀의 색깔을 하얀색으로 바꾸고 왼쪽(시계 반대방향)으로 90도 방향을 튼 뒤 한 칸 앞으로 나아간다.
- 이 개미의 첫 K번의 움직임을 시뮬레이션하는 프로그램을 작성하고 최종 격자판을 출력하는 프로그램을 작성하라. 이 격자판을 표현하는 자료구조는 여러분이 직접 설계해야 한다. K를 입력으로 받은 뒤, 최종 격자판을 출력한다. 메서드 용법(method signature)은 void printKMoves(int K)와 같을 것이다.