[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.64,0:00:04.95,Default,,0000,0000,0000,,우선, decode 메소드를 어떻게 사용할지 생각해 봅시다. 이 메소드는 해독된 Dialogue: 0,0:00:04.95,0:00:10.39,Default,,0000,0000,0000,,메시지를 리턴 할겁니다. 그리고 매개변수는 필요 없습니다. Dialogue: 0,0:00:10.39,0:00:18.66,Default,,0000,0000,0000,,decoder 테스터를 보면, docoder.decode의 결과를 출력해야 합니다. Dialogue: 0,0:00:18.66,0:00:23.66,Default,,0000,0000,0000,,decoder 테스터는 암호화된 메시지를 이미 갖고 있습니다. 그래서 이 문자열을 Dialogue: 0,0:00:23.66,0:00:28.45,Default,,0000,0000,0000,,다시 넘길 필요가 없습니다. 이제 docder로 다시 돌아와서, 우리는 0번째 Dialogue: 0,0:00:28.45,0:00:33.82,Default,,0000,0000,0000,,문자로 시작해서 각각 10번째 문자만 저장하는 for문을 작성해야 합니다. Dialogue: 0,0:00:33.82,0:00:36.18,Default,,0000,0000,0000,,문자열을 확인해야 하니까 비밀 메시지의 길이만큼 for문이 반복되야 Dialogue: 0,0:00:36.18,0:00:40.65,Default,,0000,0000,0000,,합니다. 우리가 읽을 문자열은 EncodedMessage 안에 있습니다. i를 Dialogue: 0,0:00:40.65,0:00:45.09,Default,,0000,0000,0000,,1만큼 자동 증가를 하지 않고 10만큼 자동 증가하기로 하겠습니다. 그래야 Dialogue: 0,0:00:45.09,0:00:51.55,Default,,0000,0000,0000,,10번째 문자를 읽어오기 때문입니다. 반복문 안으로 들어가서, 반복해야 할 부분은 Dialogue: 0,0:00:51.55,0:00:57.73,Default,,0000,0000,0000,,i가 i번째 글자를 읽어오고 decodedMessage에 저장하는 것입니다. Dialogue: 0,0:00:57.73,0:01:03.42,Default,,0000,0000,0000,,그래서 decodedMessage는 decodedMessage + encodedMessage.substring(i, i+1)이 Dialogue: 0,0:01:03.42,0:01:08.56,Default,,0000,0000,0000,,됩니다. 이렇게 해야 한 문자열 안의 한 글자만 가져올 수 있다는 것을 기억하세요. Dialogue: 0,0:01:08.56,0:01:12.72,Default,,0000,0000,0000,,실행해보니 비밀 메시지가 더 있습니다. 뭔지 궁금하시면 Dialogue: 0,0:01:12.72,0:01:14.84,Default,,0000,0000,0000,,다른 인덱스로부터 시작을 해야 알 수 있을 것 같습니다. Dialogue: 0,0:01:14.84,0:01:18.78,Default,,0000,0000,0000,,하지만 지금은 잠시 오류에 대해서 설명해 보도록 하겠습니다. Dialogue: 0,0:01:18.78,0:01:23.72,Default,,0000,0000,0000,,이와 같이 여기에 <나 <=를 이렇게 작성했다면, Dialogue: 0,0:01:23.72,0:01:28.56,Default,,0000,0000,0000,,'문자열 범위 이탈'이라는 예외 처리가 뜰 겁니다. Dialogue: 0,0:01:28.56,0:01:34.24,Default,,0000,0000,0000,,너무 높은 인덱스를 enocdedMessage 안에서 가리키면, 문자열 범위 이탈 Dialogue: 0,0:01:34.24,0:01:38.41,Default,,0000,0000,0000,,예외 처리가 일어나서 실행시간 오류가 됩니다. 실행시간 오류가 좋은 점은, Dialogue: 0,0:01:38.41,0:01:41.71,Default,,0000,0000,0000,,프로그램에 여러분에게 오류가 뭔지 알려주기 때문입니다. Dialogue: 0,0:01:41.71,0:01:47.21,Default,,0000,0000,0000,,아무것도 모른채 자신의 프로그램을 이상하게 바꾸는 것 보다 훨씬 더 좋은 것 같습니다. Dialogue: 0,0:01:47.21,0:01:50.93,Default,,0000,0000,0000,,하지만 이 문제를 enocdedMessage.length() -1을 넣으면서 Dialogue: 0,0:01:50.93,0:01:55.64,Default,,0000,0000,0000,,해결을 할수도 있습니다. 실행은 잘 되지만, 제가 생각할 때는 Dialogue: 0,0:01:55.64,0:02:00.81,Default,,0000,0000,0000,,깔끔해 보이지 않습니다. 문자열을 이용해서 반복할 때는, i를 길게 하고 Dialogue: 0,0:02:00.81,0:02:04.67,Default,,0000,0000,0000,,length를 짧게 하는 것이 좋습니다.