2023. 7. 28. 17:49ㆍIOS [ Swift ]
알고리즘이라는것이 코딩에서 굉장히 중요한걸 알게되었다.
코드를 짜기위해서는 단순히 어떻게 짜세요 . 네 . 이러고 바로 짜지는게아니라
어떻게 어떻게 짜겠다는 계획과 기술적고민을 해야된다는걸 알아서 알고리즘에대한 문제풀이를
열심히 해보려고한다. ( 하루 5문제 목표 )
프로그래머스라는 페이지의 알고리즘을 차례대로 풀어보았다.
먼저 몫 구하기 ( 거의 난이도 순으로 정렬 되어있음 )
우선 func으로 함수 만들어주고
num1 이랑 num2 값 숫자로 받을거니 int로 형변환 !
num1 을 num2 로 나눌 거니까 num1/num2를 해줄거고
변하지 않는 수니 let answer로 객체지정해준다.
그다음 리턴값으로 answer를 주면 나눈값( ex 10을 5로 나누면 5가 두번들어가서 2 ) 이 출력된다.
나눈 몫이라는게 잘 이해가 안됬는데 왼쪽입출력 예를 보고 다행히 알아챘다.
왜 이런 사소한 것 조차 이해가 어려울까 라는 생각을하며 가슴이 답답했지만
엣큥

하고 금방 잊어버렸다
( 감정낭비할 시간 아까움 )
배열을 두배로 만드는 문제이다.
numbers 에 속한 원소들을 각 두배씩 곱하여 리턴해줘야하는데,
어떻게 짜지 고민하며 자료를 찾아보다가
map이라는 변수를 사용하면 쉽게 정리될것같아 사용하였다.
map 이 무엇이냐 ?
사용성은 거의 fot - in 문과 비슷하다고 한다.
그러나 코드가 직관적이고 간결하면 무조건 좋은 코딩의 특성상 간결하게 쓸 수 있다는 이점이있고
재사용에도 용이 하다고한다 ( 이건 직접 본적없어서 이해 잘 안감 )
예를들어 let numArray = [1,3,5,7,9] 라는 코드가있으면
for - in 문을 사용 하였을때는 ,
var multiArray = [Int]()
// 멀티어레이라는 객체는 int값
for num in numArray{
multiArray.append(num*2)
}
// numArray 안에서 num 이 순서대로 돌아갈때, multiArray에 num*2값을 추가해주어라.
요런식으로 짜주어야하는데,
map 을 사용하면
let multiArray = numArray.map { $0*2 }
// multiArray 는 numArray 를 map{ [] 안의 각 값에 * 2를 돌면서 다 해준다 }
처럼 간단하게 축약이 가능하다!
다음은 배열 뒤집기이다.
이것도 어떻게 해야되지 라는 막막함이 있었는데 , reversed 라는 아주 좋은 코드를 발견했다.
정수가 들어있는 num_listdml 값을 reversed() 해준다 라는
return num_list.reversed()
내용으로 출력해주면 ,
안에있던 [1,2,3,4,5] 가 [5,4,3,2,1] 로 변한다.
이런 축약코드들은 어디에 활용할지를 잘 생각해보고 활용하면 굉장히 편리할 것 같다.
요 문제는 문자열 뒤집기 인데, 바로 이전문제인 배열뒤집기처럼 하면 되는거 아니야?! 하면서
바로 reversed를 사용해봤지만 어림도없었다.
물론 reversed 를 사용하는건 맞지만 , 활용 방식이 조금은 틀렸다.
우선 my_string의 값이 문자이기때문에 , string으로 출력하겠다고 선언 후
result(결과) : string(문자값이다) = string(my_string.reversed())(마이스트링을 뒤집은값도 스트링이다)
처럼 코드를 짜는것같다.
그러나 이문제는 잘 모르겠어서 답을 보고 적었음에도 이해가 되지않았다.
나중에 내가 성장하면 다시 이해해 보도록 해야겠다.
오늘의 마지막 문제다.
가위바위보 로직인데, 가위는 2 바위는 0 보는 5 라는 숫자를 대입하고
rsp라는 매개변수에 205가 차례대로 들어가 있는 상태.
결국 나는 for - in 문을 사용하여
( 위에서 더 쉬운 map을 알았지만서도 아직 숙련도가 낮아 for -in 사용 )
if문을 넣고, 만약에~ rsp를 돌고있는 a의 값이 2이면 b에 0이라는 문자를 추가해~
하는방식으로 3가지모두 진행하고
b의값을 return 해주는 식으로 코드를 작성 하였다.
앗참 그리고 b는 "" 안에 들어가는 문자형식으로 출력하기위해 var로 객체선언하여 string값을 주었다.
서브웨이 키오스크도 오늘 더 진행하였으나 git hub에서 팀원들이 굉장한 고난을 겪고있어
진행이 더딘상태가 되어버렸다.
내일은 그 git에 대한 내용을 적어 보도록 하겠다.
'IOS [ Swift ]' 카테고리의 다른 글
23.07.31 swift UIview & UIviewcontroller 기초 공부 (2) | 2023.07.31 |
---|---|
23.07.28 알고리즘 천국과 키오스크 코드수정 그리고 과제 최최최종본 제출 (2) | 2023.07.29 |
23.07.24 팀 프로젝트 - 쉑쉑버거 메뉴판 / 제품 구매 코드짜기 (0) | 2023.07.25 |
23.07.21 swift / 계산기에 대한 이해 / 호텔 프로그램 제작기(1) (0) | 2023.07.24 |
23.07.19 계산기 프로그래밍(3) (0) | 2023.07.20 |