23.07.28 알고리즘 천국과 키오스크 코드수정 그리고 과제 최최최종본 제출
오늘 풀어본 알고리즘은 최댓값 만들기와 숫자찾기 그리고 캐릭터의 좌표이다.
물론 나는 아직 기본문법부터가 많이 모자란 상태이어서 내 혼자힘으로는 풀기 힘든것같다.
공부를 진행하면서 느끼는건 매번 벽에부딪히고 매번 박탈감이 들지만서도
애니캐릭터 빙의된 감정같은게 자꾸 든다 ( 애니 잘모름 )
자 우선 최댓값 만들기
부터 보겠다
import Foundation
func solution(_ numbers:[Int]) -> Int {
var sorted = numbers.sorted()
return sorted[numbers.count-2]*sorted[numbers.count-1]
}
처음 이문제를 접했을때 복잡하게 생각하느라 바빴다
var 하나만들어서 거기에 array값으로 배열 만든다음에
그 배열을 for - in문으로 차례로 돌면서 가장 큰값을 두개 찾고
각각 곱한다
이런개념으로 코드를 짜고있었는데 아뿔싸
sorted라는 좋은 함수를 알아버렸다!!!!
문제를보면 배열안에 숫자가 랜덤하게 적혀있는데
저 sorted 라는 함수는 무려 이 숫자를 작은순서대로 정렬해줄 수 있는 것 이었다!!
그래서 sorted를 함수를 사용하여 배열안의 숫자들을 작은순대로 정리해버린후 ,
그 배열안의 맨끝에 두개를 곱하면 가장 큰 수 두개를 곱하는거나 마찬가지가 되어버린다.
정말 코딩의 세계는 무궁무진하면서도 머리아픈것같다.
그래도 늘 공부하며 하나하나 배워가는느낌이다.
다음은 숫자찾기 문제이다
import Foundation
func solution(_ num:Int, _ k:Int) -> Int {
var k = [1,4,7]
var count = 0
var t = Character(k)
for a in num {
if a > 0 {
count += 1
if a == t[0] {
break
}
if a == t[1] {
break
}
if a == t[2] {
return -1
break
}
}
}
return count
}
참고로 이문제는 아직 풀지못했다 ..
대충 구상으로는 k의 값이 1,4,7이니까
count값을 0부터 시작하게한다음에
for - in문으로 num을 a가 차례대로돌면서
a가 0보다 클때마다 count를 한개씩늘리고, k 배열의 각각 자릿수랑 a의 값이 같으면 멈춰서
count값을 출력한다. 라는 개념으로 짜고있긴한데
정답이 아니라고 뜨는중이다.
근데 이 블로그 포스팅 진행하면서 뭔가 갑자기 고칠수있을것같다는 생각이든다 . 오늘은 너무늦었으니까 내일이나 모래 주말활용해서
다시 풀어봐야지 헤헤
다음은 캐릭터의 좌표구하기이다.
import Foundation
func solution(_ keyinput:[String], _ board:[Int]) -> [Int] {
var x:Int = 0
var y:Int = 0
var solve:[Int] = [x,y]
for i in keyinput{
// max.board = (4,-4)
switch i{
case "up" : solve[1] += 1
case "down" : solve[1] -= 1
case "left" : solve[0] -= 1
case "right" : solve[0] += 1
default : break
}
}
if board{[]}
// array 첫번째값에 x를 주고 2번째 값에 y를 준다.
// 입력할떄마다 array값을 각 방향에 맞게 +나 -해준다
// up [0,1]
// down [0,-1]
// left [-1,0]
// right [1,0]
return solve
}
밑에 조건이 더 있긴한데 대충 이런문제이다.
딱 봐도 난이도가 꽤 있어보여서 지레 겁먹었는데, 정신차리고 다시 생각을 가다듬었다.
어떻게 풀면 좋을지 고민고민 하면서 생각한 결과
solve 라는 리턴값만들어서 거기 [x,y] 배열 넣은다음에 ,
x,y값을 0에서 시작하게한 후
캐릭터를 움직일때마다 계속 확인해야 하니까 for - in문을 사용하고,
조건문 switch를 넣어서 각각의 방향키 케이스를 만들어주었다.
그 각각의 케이스 안에는 solve의 배열안의 x,y값을 일치하면 +하거나 -하도록 설정해두었다.
이렇게하니까 예제문제 1번은 풀렸는데 , 2번문제가 풀리지않았다.
아마 board라는 조건에대한 코드를 아직 짜지않아서 인것같은데 , board조건은 어떻게 시작해야할지 감도안온다.
다음에 다시 풀어볼때 좀 찾아보면서 참고해야지!!!!!
그리고 오늘은 대망의 과제 최종 제출일 이었다.
코드리뷰도 하면 좋을텐데 매일매일 하루가 너무 바쁜탓에 피로누적이 심하다..
다음에 기회가 되면 공유해보는걸로 !