프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

68. 프로그래밍 문제 (10)


⚠ 제공되는 정답은 신중히 열어보세요

정답을 쉽게 확인할수록 문제 해결 능력은 천천히 오릅니다.
반드시 오래 생각한 후, 강좌를 아무리 복습해도 답을 모르겠을 때 정답을 확인해주세요.

프로그래밍 문제

문제 1. 아래와 같은 문자열이 각각의 요소로 담긴 배열을 만들어보세요.

[문자열] (총 5개)
사과 | 바나나 | 수박 | 자두 | 딸기

[조건]
1. 코드 제한: 1줄
2. 배열의 이름은 fruit로 한다.
3. 각 요소의 순서를 바꾸지 않을 것.

정답 펼치기/접기
1fruit := ["사과", "바나나", "수박", "자두", "딸기"]
또는
1fruit := Array("사과", "바나나", "수박", "자두", "딸기")

 


문제 2. 아래와 같은 프로그램을 작성하세요.

[동작]
1. 1번 문제에서 만든 fruit 배열의 요소를 하나씩 순차 출력한다.

[조건]
1. 코드 제한: 5줄
2. 출력 양식은 [index] element로 한다. (예: [1] 사과)
3. 출력은 각 요소당 1회 씩, 총 5회 알림 상자를 이용하여 출력한다.

정답 펼치기/접기
문제 2 정답
68-2.ahk (0.13KB)

 


문제 3. 아래와 같은 프로그램을 작성하세요.

실력 향상을 원하시는 분을 위한 추가 문제로서, 풀지 못해도 추후 강좌 진행에 문제가 없습니다.

[동작]
1. F1키를 누를 때마다 현재 시각(n)과 임의의 정수(m)를 저장하는 맵을 만든다.
2. 맵이 만들어질 때마다 각 맵을 한 배열의 요소로 넣는다.
3. 키보드의 1 키를 누르면 1번 요소의 n과 m을 출력한다.
4. 마찬가지로 키보드의 2, 3, 4, …, 9번 키로도 각 요소의 n과 m을 출력하게 한다.
5. ESC로 프로그램을 종료할 수 있게 한다.
6. 예를 들어서, n이 20230804013601 이고 m이 2라면, 출력은 202308040136012가 된다.
7. 배열의 요소가 9개인 상태에서 맵을 더 추가하려고 하면 더는 추가할 수 없습니다!를 출력한 후 아무것도 하지 않는다.
8. 없는 인덱스에 접근하려고 하면 아무것도 하지 않는다. (예를 들어서, 배열에 요소가 4개인데 5 키를 누르면 아무것도 하지 않는다. - 오류 메시지도 안보이게 하기!)

[조건]
1. 맵과 배열의 이름, 출력 양식은 자유롭게 한다.
2. 현재 시각(n)을 저장하는 키는 nowTime, 임의의 정수를 저장하는 키(m)는 leftTime으로 한다.
3. 임의의 정수(m)은 정수가 담기는 내장 변수 중 아무거나 넣어서 쓸 것.
4. 키보드에서 누른 키를 매개변수로 받아서 n과 m을 출력하는 함수 printMap()을 구현해서 쓸 것.

힌트 펼치기/접기 1. 배열 안에 맵을 넣을 땐 배열의 '어떤 메서드'를 이용한다.
2. 핫키 지역에서 누른 핫키는 A_ThisHotkey 변수에 담겨있다.
3. 문제가 어렵다면 며칠이고 붙잡아보자! 그 경험은 실력을 향상시키기 위한 밑거름이 된다.
정답 펼치기/접기
문제 3 정답
68-3.ahk (0.95KB)

 


문제 4. 아래와 같이 문제 3의 프로그램을 수정하세요.

맵 대신에 객체 리터럴을 이용한 방식으로 수정해볼 것.

정답 펼치기/접기
문제 4 정답
68-4.ahk (0.94KB)

 


정답은 예시입니다.

조건을 지켜서 프로그래밍 했다고 가정할 때, 제공 정답과 동일한 동작을 한다면 잘 하신 것입니다.
내려받은 정답 코드가 자신의 코드와 다르다고해서 오답인 것은 아닙니다!

질문하러 가기