본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 24. 서울에서 김서방 찾기

by 솔비님 2024. 7. 8.

 

1. 문제 설명 (📎Link)

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

2. 제한사항

seoul은 길이 1 이상, 1000 이하인 배열입니다.

seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.

"Kim"은 반드시 seoul 안에 포함되어 있습니다.

 


📝 문제

func solution(_ seoul:[String]) -> String {    
	return 0
}

 

 

💻 내가 푼 방법 및 풀이

 

전체 코드

func solution(_ seoul:[String]) -> String {    
    for x in 0...seoul.count - 1 {
        guard seoul[x] != "Kim" else { return "김서방은 \(x)에 있다" }
    }
    
    return " "
}

 

코드별 설명(왜 그렇게 풀었는가?)

for x in 0...seoul.count - 1

김서방의 위치 x가 seoul의 요소를 돌아야 하므로 반복문을 작성한다

대신, 배열에서 요소는 1부터가 아닌 0부터 시작이므로 .count-1 을 추가해준다

만약 제시된 seoul이 ["solbi", "rin", "seongjin", "kim"] 의 배열일 경우 kim은 4번째가 아닌, 3번째 위치이기 때문이다

guard seoul[x] != "Kim" else { return "김서방은 \(x)에 있다" }

1. seoul의 요소가 김서방이 아니다 → 거짓 → guard문 바깥으로 빠짐

2. seoul의 요소가 김서방이 맞다 → 참 → guard문 내부 블록 실행

문제의 조건 중 seoul 배열 내부에 김서방은 100% 있으므로 내부 블록이 실행된다

return " "

 거짓일 경우 필요한 return 값도 넣어준다


🔎 의문점과 공부한 것

1. 그동안 if문만 사용했었는데, guard문을 사용하면서 더 직관적인 코드 사용이 가능해졌다

   아직은 많이 헷갈리는데 필요성에 따라 적절하게 사용할 수 있도록 공부해야겠다!!!!!!!

2. 알고리즘 점점 어려워지는데 하나 풀 때마다 레벨업 하는 기분 ㅎㅎ