BOID

배열의 인덱스 구분하기( indices, enumerated ) - HoonIOS 본문

알고리즘에 유용한 문법

배열의 인덱스 구분하기( indices, enumerated ) - HoonIOS

HoonIOS 2021. 5. 12. 09:57

안녕하세요, HoonIOS입니다. :)

 

요즘 알고리즘 문제를 열심히 풀고 있는데요, 기본적이면서 편리한 것을 정리하면 어떨까 해서 한번 정리를 해봤습니다.

 

알고리즘의 꽃으로 배열의 길이를 구하고 그 배열의 길이만큼 for문을 사용을 해줬는데요, 그럴 필요가 없었습니다.

 

배열에. indicies,. enumerated()배열의 index를 구현하면 알차게 구현을 할 수 있습니다.

 

 indicies property

 

indicies는 Collection 타입 에서 사용할 수 있는 프로퍼티로 스위프트에서 배열(Array), 딕셔너리(Dictionary), 세트(Set)가 있습니다.

 

해당 Collection타입에는 indicies 프로퍼티가 제공을 합니다.

 

indicies란 SubScripting할수 있는 컬렉션 요소들을 SubScription을 함으로써 해당 배열의 크기만큼 인덱스 범위를 잡아가게 됩니다.

 

indicies를 사용하게 되면 배열의 크기만큼 range가 정해지게 됩니다.

 

위 코드를 보시면 해당 배열의 크기만큼 range가 생기는 것을 알 수 있습니다.

이제 이값을 이용해서 for문을 돌려보면 count값의 range값만큼 for문이 돌아가는 것을 확인을 할 수 있습니다.

 

 

배열의 시작은 0부터니깐 0부터 시작해서 9까지 가는거 보이시죠?!?

 

근데 indicies를 공부하다가 새로운것을 또 발견했는데요, 애플 문서를 보니 String값을 indices해준 다음 해당 인덱스를 String배열에 넣으니 그 값들이 출력을 하는 것이었습니다.

이해가 안 가실 수 있으시니 바로 예시로 살펴보겠습니다.

어떤가요 String배열의 쪼갤 수 있는 인덱스를 넣어서 for문으로 해당 String의 인덱스에 대입하니 값이 나오는 것입니다!!

 

우와 아아... String을 다루기 힘든 swift에서 이렇게 인덱스에 해당하는 값만 빼올 수 있다니 신선하네요

 

 .enumurated()

 

이제 2번째로 배열 유용하다고 생각을 하는게 .enumurated()입니다, 이 메서드도 위의 프로퍼티와 같이 컬랙션 타입에 사용을 할 수 있습니다.

 

이 메서드의 시간 복잡도는 1입니다. 1인만큼 편안하게 사용해도 될꺼같네요ㅎㅎㅎ

 

음... 이 메서드를 쓰면서 제일 좋았던 것은 해당 인덱스랑 값이 같이 나오는 것이었습니다. 이 메서드는 딕셔너리 형태로 변환이 되는데 키 값에는 인덱스, value값에는 해당 인덱스의 값이 넣어지게 됩니다.

 

위 예시를 보면 for문에 두 개의 인자 값을 넣어서 출력을 하게 되면 해당 배열의 인덱스와 그 키에 해당하는 value값이 출력을 하게 됩니다. 

 

이것도 String에 사용을 하면 해당 값과 인덱스를 출력해서 사용을 할 수 있습니다.

 

 

 

배열에 활용하기 좋은 부분인 것 같습니다. :)

반응형
Comments