솔리디티 깨부수기 - 기본
솔리디티 강좌 24강 반복문3 - linear search
D_One
2021. 9. 23. 21:26
유튜브를 통해, 쉽고 간편하게 이해 해보아요!
https://youtu.be/NJVVmHfm2mg
- YouTube
www.youtube.com
구독/좋아요 해주셔서 감사합니다 :) !!
안녕하세요
오늘은 for loop을 간단히 응용해서,
linear search를 만들어 보려고 합니다.
linear search 는 배열의 값을 검색할때 써요.
라는 간단한 배열이 있습니다.
여기서 저희가 search를 해야하니까, 특정한 값을 입력 받아 이 배열안에 있는가를 검색하게 될 것 입니다.
예를들어, 저희는 search 값으로 3을 입력 받고, 3인 어떤 인덱스 값인지 리턴하는 linear search를 만들었다고 가정 하였을때, for loop은 인덱스 0 부터 시작하여 인덱스 2번째 값인 3이 나올때 까지 하나하나 일일히 비교를 하게 된답니다.
그러나 만약에 search 값으로 10 을 입력 받고, 찾게된다면 현재 저 배열에는 10 이 없으니 인덱스 값이 안나오겠죠
그럴경우 해당 값이 없다고 리턴을 하게 됩니다.
자 쉽게 예제로 볼게요.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract lec24{
string[] private countryList = ["South Korea","North Korea","USA","China","Japan"];
function linearSearch(string memory _search) public view returns(int256,string memory){
for(uint256 i=0; i<countryList.length; i++){
if(keccak256(bytes(countryList[i])) == keccak256(bytes(_search))){
return (i,countryList[i]);
}
}
return(99,"Nothing");
}
}