https://school.programmers.co.kr/learn/courses/30/lessons/12919

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

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

제한 사항

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

발상

주어진 문자열이 존재하는 배열의 인덱스 찾는 문제이다.

해시맵이나 스트림 필터등의 아이디어가 떠올랐지만, 인덱스를 찾아야 하기 때문에 배열을 그대로 유지하면서 반복문을 돌리는 것이 가장 간결해 보였다.

의사코드

1. index 선언
2. 반복문(배열의 길이만큼)
  1. i번째 값이 "Kim"이면 index=i, break;
3. 반환문자열 만들어 반환

 

개선

인덱스를 찾아야 하니 단순 for 반복문으로 구현하였는데

콜렉션 라이브러리를 사용하여 Arrays.asList(배열).indexOf()로 함수호출로 구현한 풀이를 확인하였다.

실무에서는 라이브러리를 사용하는 것이 가독성과 유지보수가 더 좋을 것이다.

또한 인덱스 값을 스트링으로 반환할 때 반환문자열을 스트링 + 인덱스 + 스트링이 아니라
String.concat 함수를 사용하거나 String.format함수를 사용하면 속도를 크게 줄일 수 있었다.
 
 
 

'IT > Algorithm' 카테고리의 다른 글

[programmers] 자릿수 더하기  (0) 2022.07.08
[programmers] 약수의 합  (0) 2022.07.08
[programmers] 부족한 금액 계산하기  (0) 2022.07.07
[programmers] 나머지가 1이 되는 수 찾기  (0) 2022.07.06
[programmers] 평균 구하기  (0) 2022.07.05

+ Recent posts