본문 바로가기

Coding/Swift

(9)
만들고 싶은 어플이 생겨서 메모앱 튜토리얼 공부 https://youtu.be/O7fZ2ZvEKoA 인터넷 이곳저곳을 서핑하면서 만화책을 보다가 팟!하고 어떤 것이 만들고 싶어졌다. 지금까지 이런 순간은 종종 있었는데 그럴 때마다 메모장에 적어놓기만 하고 실행에 옮긴 것은 없다. 암튼 이번에 생각난 건 꽤 할만 할 것 같아서 해보려고 했는데 도대체 어디서 부터 시작해야하는지;; 안드로이드 앱을 만드는 건 학교에서 배운 적이 있지만 정작 내가 아이폰 유저라서 쓸 수 없다. 전에 Swift 공부도 아주 조오금 했으니 무작정 만들어보기로 한다. 일단 기본이 되는 조작부터 알기 위해 유튜브에서 영상을 찾아 공부했다. 이것으로 대충의 틀은 만들 수 있을 것 같다. 문제는 배포와 데이터 저장인데 그 부분은 영상에 포함되어 있지 않다. 일단 틀이나 만들고 그 때가..
Playgrounds 코딩 배우기 2 > 매개변수 > 트윈 픽스 Swift Playgrounds 코딩 배우기 2 > 매개변수 > 트윈 픽스 캐릭터의 위치를 설정할 수 있다는 점을 이용하기 제시 조건_ totalGems로 총 개수가 표시되면 개수가 임의로 결정되는 보석을 수집하자. 사용자의 매개변수, 초기화, 메소드, 변수 등의 지식을 시험해 보세요! 부가 정보_ 캐릭터와 전문가의 위치를 지정하며 시작할 수 있다. -> world.place(~) 내 코드_ let totalGems = randomNumberOfGems let expert = Expert() let character = Character() var gemCounter = 0 var counter = 0 func getGem() { if character.isBlocked { character.jump()..
Playgrounds 코딩 배우기 2 > 유형 > 세상의 가장자리 Swift Playgrounds 코딩 배우기 2 > 유형 > 세상의 가장자리 문제를 해결하는데 은근히 많은 시간이 소요되었고, 작성한 코드도 그닥 마음에 들지 않는 문제였다. 제시된 조건_ 여러 해결 방법을 시도하여 가장 효과적인 방법을 찾아 보세요. 효과적인 코드를 작성하면 프로그램이 더 빠르게 실행되고 사람들의 앱 사용 만족도가 높아질 뿐 아니라 배터리 사용 시간도 개선됩니다. 크게 4구역으로 나누어 모든 구역을 한 번씩만 방문하는 것을 목표로 하였다. 내가 생각하는 높은 효율은 한 번 방문한 곳은 다시 방문하지 않도록 하는 것이었기 때문이다. + 어려움을 겪었던 부분은 2번 구역에서 3번 구역으로 넘어가는 구간이다. 2번 구역의 보석을 모두 수집하고 다시 오렌지 포탈을 열어 1번에서 3번으로 가는 ..
Playgrounds 코딩 배우기 2 > 유형 > 올바른 포털 설정하기 Swift Playgrounds 코딩 배우기 2 > 유형 > 올바른 포털 설정하기 어려운 문제는 아니지만 포털이 깜빡거리는게 재밌어서 포스팅을 하게 되었다. 실행 화면_ 내 코드_ bluePortal.isActive = false pinkPortal.isActive = false var gemCounter = 0 while gemCounter != 4 { if isOnGem { collectGem() gemCounter += 1 } if isBlocked { turnLeft() turnLeft() pinkPortal.isActive = !(pinkPortal.isActive) bluePortal.isActive = !(bluePortal.isActive) } moveForward() } 포털을 적재적소에..
Playgrounds 코딩 배우기 1 > 알고리즘 > 오른쪽, 왼쪽으로 구르기 Swift Playgrounds 코딩 배우기 1 > 알고리즘 > 오른쪽, 왼쪽으로 구르기 목표 : 보석을 전부 줍고, 스위치를 모두 On상태로 만들 것. 핵심 : 보석은 왼쪽과 앞이 막힌 코너에 있고, 스위치는 오른쪽과 앞이 막힌 코너에 있다는 것을 이용해야 한다. 내 코드_ turnLeft() while !(isBlocked && isBlockedLeft && isBlockedRight) { if isBlockedLeft && isBlocked { turnRight() moveForward() collectGem() turnRight() moveForward() collectGem() } else if isBlockedRight && isBlocked { turnLeft() moveForward() i..
Playgrounds 코딩 배우기 1 > 알고리즘 > 오른손 법칙 Swift Playgrounds 코딩 배우기 1 > 알고리즘 > 오른손 법칙 제시한 의사코드_ navigate around wall { if blocked to the right { move forward } else { turn right move forward } } while not on closed switch { navigate around wall if on gem { collect gem turn around } } toggle switch 내가 작성한 코드_ func navigateAroundWall() { if isBlockedRight { moveForward() } else { turnRight() moveForward() } } func collectOrToggle() { if is..
Playgrounds 코딩 배우기 1 > 조건 코드 > 박스 안에서 Swift Playgrounds 코딩 배우기 1 > 조건 코드 > 박스 안에서 목표 : 둘러싸인 격자의 아이템 처리하기 조건 : 함수, 루프, 조건식을 사용해야 한다. 나는 반시계 방향으로 한바퀴 도는 것을 택했다. 이때 현위치를 제외한 경로에 있는 블록에 순서를 붙이면 1,2,4,6 번 블록에서 turnLeft() 를 사용하게 되는데 이를 반복문을 이용하여 코드를 짤 수 있다. 총 8번의 진행중에서 1,2,4,6은 turnLeft()가 있고 3,5,7,8은 turnLeft()가 없다. 이것을 반복이 가능하도록 다듬으면 첫번째로 방문하는 블록(1)은 반복에서 제외하고, 마지막으로 방문하는 블록(8)은 결과에 영향을 미치지 않지만 turnLeft()를 넣는다. 그럼 2,4,6,8 은 turnLeft()가 ..
Playgrounds 코딩 배우기 1 > 조건 코드 > 스마트하게 함수 정의하기 Swift Playgrounds 코딩 배우기 1 > 조건 코드 > 스마트하게 함수 정의하기 목표 : 함수, 루프, 조건식을 사용하여 보석을 수집하거나 스위치를 작동시켜 보세요. (전부작동/전부수집) 제시된 조건1_ if구문을 많이 사용하여 퍼즐을 해결할 수도 있지만 그보다 나은 방법이 있습니다. 퍼즐을 단순한 패턴으로 먼저 나누어 보세요. 퍼즐에는 경로가 크게 3가지가 있습니다. 각 경로에는 2개의 보석이나 스위치가 존재할 확률이 있습니다. 제시된 조건2_ 1. if 구문을 사용하여 타일의 내용을 확인하는 collectOrToggle() 함수를 정의합니다. 2. 함수를 정의한 다음, collectOrToggle() 및 다른 명령을 호출하여 퍼즐을 해결합니다. 풀이_ 퍼즐을 단순한 패턴으로 먼저 나누어 보..
Swift의 세계로 때는 대학교 4학년 2학기를 앞두고 휴학을 한 시점이었다. 졸업까지 한 학기만을 남겨둔 나는 슬슬 취업 준비를 해야했다. 약 4년간 컴퓨터학과의 과목들을 수강하며 배운 C, Java, JS, Python 등의 언어가 있었다. 무엇을 코딩테스트의 주 언어로 할 것이며, 또 어떤 직군을 선택할 것인가는 졸업을 앞둔 컴퓨터 관련 학과 학생들이라면 한 번 쯤 할 고민이다. 그런데 어쩌지 전부 그냥 그랬다. 무엇하나 내 마음에 쏙 드는 것 없이 비슷비슷했다. 그렇게 극단적인 면이 있는 나는 iOS에 도전해보기로 했다. 지금까지의 것들이 그저 그랬다면 새로운 것을 도전해보고 싶었고, 무엇보다 그럴 수 있는 환경이 내게 있었다. (맥북이 있고,,, 시간이 있고,,,) _ 그런데 스위프트는 어떻게 공부해야하는 것일까...