티스토리 뷰
이전 공부
2020/12/02 - [코딩 공부] - 아이패드 앱 스위프트 플레이그라운드로 코딩 공부하기 8. 변수
스위프트 플레이그라운드로 코딩 공부하기 아홉 번째 유형 파트입니다.
와 많이 왔다~
뿌듯^^
그 동안 인터넷 글을 보다보면 메소드란 말을 많이 봤는데 정확히 무슨 뜻인지는 다 설명을 안 하고 메소드라고 언급만 하시더라고요. 그래서 영어 단어 뜻 그대로인가? 하고 있었는데 오늘에서야 코딩에서의 메소드가 무엇인지 정확히 알게 되었습니다.
내 눈높이에 딱 맞는 수업~^^
유형 파트의 첫 번째 문제는 스위치들을 모두 켜는 것인데 스위치로 가려면 포탈을 지나가야 해서 저 포탈을 비활성화하는 코드를 써 주어야 합니다.
드디어 포탈의 상태를 true와 false 명령어를 사용해 껐다 켰다 할 수 있게 되었어요.
먼저 그린 포탈의 액티브 상태를 거짓으로 해서 포탈을 끈 다음 스위치로 이동해서 해결하는 함수를 만들고 while 루프로 반복시켰습니다.
두 번째는 보석들을 수집한 후 마지막에 있는 스위치를 켜는 것입니다.
이번에는 포탈을 시간에 따라 껐다 켰다 해야해서 포탈 너머에 있는 보석을 먼저 수집하고 난 후 포탈을 타고 이동해서 나머지를 수집하도록 했습니다.
먼저 포탈을 끄고 젬과 스위치들의 카운터 변수를 선언한 후 뒤도는 함수를 만들었습니다.
먼저 while 루프를 사용해서 맨 처음 보이는 보석 4개를 수집한 후 포탈이 다시 켜지도록 했습니다.
그 후 포탈을 타고 이동해 스위치를 먼저 해결한 다음 포탈을 끄고 뒤돌아 나머지 보석들을 수집했습니다.
세 번째는 두 가지 포탈 뒤에 있는 보석들을 수집하기입니다.
이 때까지만 해도 전 while 루프만 사용해서 해결해야 하는 줄 알고 while 루프 안에 들어가는 코드를 짜다 보니 젬 카운터 갯수마다 포탈을 켜 줬다가 껐다가 하면서 좀 왔다갔다 하면서 클리어가 되는 코드를 짰는데 지금 보니까 그냥 일반 명령문을 사용해서 더 단순하게 짜도 됐을 거 같습니다.
이 당시엔 while 루프 안에 끼워맞춰 볼 거라고 굉장한 고민을 했었음...
네 번째는 포탈을 둘러싸고 있는 보석들과 스위치들을 해결하기입니다.
이거도 푸는 데 시간이 많이 걸렸던 기억이 납니다.
저는 먼저 캐릭터의 오른쪽에 보이는 주황색 포탈 주변 스위치들을 먼저 켠 후 직진해서 초록 포탈 주변에 있는 보석들을 수집하고 그 옆에 있는 주황색 포탈 주변의 보석들을 수집한 후 되돌아가 초록 포탈을 타고 마지막 초록 포탈 주변의 스위치 네 개를 켜는 동선을 짰습니다.
먼저 젬 카운터와 스위치 카운터의 변수를 각각 초기화한 후 각종 행동 함수들을 만들고 보석과 스위치가 두 개씩 있는 부분을 해결하는 solveTwoTiles() 함수를 만들고 보석과 스위치가 네 개씩 있는 부분을 해결하는 solveFourTiles() 함수를 만들었습니다.
그리고 명령문 시작에서 포탈들을 다 끄고 while 루프로 보석 스위치 2개 구간을 해결한 다음 초록 포탈을 켜고 보석이 4개 있는 곳으로 이동해 while 루프를 이용해 보석들을 수집했습니다.
그 다음 초록 포탈을 타고 스위치가 있는 곳으로 이동한 후 초록 포탈을 다시 끄고 while 루프를 사용해 남아 있는 스위치들을 해결했습니다.
다섯 번째는 제게 가장 난이도가 높았던 스테이지입니다.
포탈을 타고 이동해서 임의의 위치에 생성되는 보석들을 수집하기.
코드를 어떻게 짜야 하나 한참 고민했던 것 같습니다. 살짝 멘붕도 오고...ㅋㅋㅋ
그러다 구글링 해 보니까 저런 식으로 구역을 나눠서 행동하는 코드를 짜서 해결하셨다는 분이 있어서 저도 가운데 구역을 해결하는 함수와 양 옆을 해결하는 함수를 만들었습니다.
가운데 부분에 있는 가로 세 칸 타일을 해결하는 함수 solveThreeTiles() 와 양 옆을 해결하는 함수 sideLine()
그리고 분홍색 포탈을 타고 이동해서 분홍색 포탈이 있는 옆 부분을 해결하고 가운데로 돌아와 포탈 너머에 있는 세 타일을 해결하는 함수 pinkPortal()를 만들고
파란 포탈을 타고 이동해 파란 포탈이 있는 라인을 해결한 다음 다시 가운데로 돌아와 파란 포탈 너머에 있는 타일 세 칸을 해결하는 함수 bluePortal()를 만들었습니다.
마지막으로 while 루프에 젬 카운터가 토탈 젬보다 적을 동안 반복하는 조건을 넣어서 클리어했습니다.
처음에 발상의 전환이 어려워서 끙끙 앓았던 문제 ㅠㅠ
너무 힘들고 오래걸렸기 때문에 영상도 찍어보았습니다.
어려웠지만 해결하고 나니까 뿌듯!
작심삼일로 접지 않고 이어지는 다음 공부
2020/12/04 - [코딩 공부] - 아이패드 앱 스위프트 플레이그라운드로 코딩 공부! 10. 초기화
'코딩 공부' 카테고리의 다른 글
아이패드로 코딩 공부하자! 스위프트 플레이그라운드 11. 매개변수 (0) | 2020.12.05 |
---|---|
아이패드 앱 스위프트 플레이그라운드로 코딩 공부! 10. 초기화 (0) | 2020.12.04 |
아이패드 앱 스위프트 플레이그라운드로 코딩 공부하기 8. 변수 (0) | 2020.12.02 |
아이패드 앱 스위프트 플레이그라운드와 코딩 공부하기 7. 알고리즘 (0) | 2020.12.01 |
스위프트 플레이그라운드로 코딩 공부하기 6. While 루프 (0) | 2020.12.01 |
- Total
- Today
- Yesterday
- 컴퓨터사이언스
- 해커랭크
- 아이패드
- 문제풀이
- 알고리즘
- c++
- 그리디
- C언어기초
- 컴퓨터
- 영어공부
- 프로그래머스
- hackerrank
- BFS
- 캐나다
- 깊이우선탐색
- 컴퓨터공부
- 애플
- 백준
- DFS
- dp
- 캐나다생활
- 기초
- 프로그래밍
- 스위프트플레이그라운드
- 하드웨어
- 너비우선탐색
- greedy
- 다이나믹프로그래밍
- 코딩공부
- c언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |