23.08.04 문자열 정렬하기 알고리즘 / 계산기 constraints
저번에 풀었던 문자열 정렬하기문제의 새로운풀이방식을 공유해보고자 글을 쓰게되었다.
우선 나와는 다른풀이를 팀원분께서 작성해주신건데, 그 풀이가 너무 신박해서 가져왔다.
코드의 작동방식에대해서 풀이해 보자면
일단 my_string 안에있는 값이
문자와 숫자의 혼합된 형태인데,
그 안에있는 숫자만뽑아서 오름차순 정렬하는게 문제의 핵심이다.
나는 이 문제를 먼저 charcter값으로 문자들을 변환 후 , for문을돌려 숫자인 문자들을 추출해
다시 Int값으로 돌려주고 sorted로 오름차순 정렬로 풀어내었는데
이 풀이방식은 먼저 my_string을 map함수로 묶어주고
그 맵핑된 my_string을 (testList) 다시 compactMap으로 묶어주어서 Int값만 찾아낸다.
빨간색으로 변환시킨문장이 잘 이해가가지않아서 혼자 이리저리 찾아보면서 개념을 정리해 보았다.
compactMap의 기능이 nil 값을 자동으로 빼주는기능이있어서 먼저 Int값만 추출하겠다는 함수를 써주고
testList (my_string.map)안에있는 글자들을 nil값으로 추출시켜버린다.
그럼 자동으로 compactMap이 nil값을 다 배제시켜버려서 결국 숫자만 남은상태가된다.
그럼 이제 우리가 해야 할 일은 오름차순 정렬뿐이고
오름차순 정렬은 간단하게 sorted로 가능하다.
.
.
optional함수의 개념이 잘 이해가 되지않았었는데 오히려 이런 코드를 역으로 풀어봄으로써
개념에 대한 이해가 확실해지는 느낌이들어 성취적인 기분을 느낄 수 있었다.
다음은 계산기프로그램 디자인의 constraints 조절이다.
왼쪽의 리스트를 보면 Stack View가 있고 View가 그안에 속해있고 또 Stack View가 있고..
마치 마트료시카처럼 뷰안의뷰안의뷰가 있는데
안드로이드나 아이폰 모두 세로모드 가로모드를 지원하는게 추세이기때문에
프로그램의 UI를 다양한것에 최적화되도록 설계하기위해 저런식으로 마트료시카를 쌓는것이다.
각각 가로줄 기준 같은줄에 있는 오브젝트들을 묶어서 스택뷰로 만들면
총 4개의 스택뷰가 나오게되고, 계산기 값 입력창인 0 << 까지 view 로 따로묶어준뒤
5개의 view를 모두 stack view 로 묶어버린다.
묶어주고나면 오른쪽아래에 있는 constrain 조절을 해주어서
어느 각도나 방향에있어도 일정 비율을 유지할 수 있게 만들어 주어야하는데,
각각의 값들을 다 0으로 설정해주고 저 빨간선을 클릭해 고정해주면 된다고한다.
그럼 각각의 방향에서의 마진값이 고정되어서 어떤비율의 화면에서든 일정비율로 화면이 유지되는것 같다.
아직 constrain에 대한 개념이 70%정도만 잡힌것같아서 계속 되풀이하며 공부를 해봐야겠다.