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

 

프로그래머스

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

programmers.co.kr

문제

text

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

발상

일반적인 문장을 공백으로 잘라내고, 가공하는 문제인 줄 알았다.

그런데 코드를 작성하고 테스트케이스를 돌려보니 문제가 명확하지 않아 답이 맞지 않았다.

실패한 테스트케이스를 프로그래머스에선 입출력 확인도 안되어 고민하다 시간만 날리다가 결국 다른 사람들의 사례를 검색하여 이슈를 확인하고 해결하였다.

 

의사코드

1. 문자열을 1글자씩 자르기
2. 잘라진 문자열 수만큼 반복{
	1. 내부 순환을 위한 카운트 설정, 공백이면 카운트 초기화
    2. 카운트가 짝수면 대문자, 홀수면 소문자 변환
}
3. 변환된 값 반환

 

개선

문제점은 하나 이상의 공백이라는 점, 그리고 출력값도 하나 이상의 공백이 그대로 들어가야 한다는 점과

제시문이 대문자도 나올 수 있다는 점을 예시에서 보여주지 않았다는 점이다.

그때문에 소문자로 된 공백 하나로 구분된 문장이 들어오겠구나 생각하였지만 실제로 테스트케이스를 돌리니 주어진 예제케이스 말고 대부분 실패하는 상황이 발생하였다.

 

알고리즘의 정의중 하나인 `입력' 부분에서 입력이 제대로 정의되지 않아서 발생한 문제이긴 하지만

현실에서 프로그램을 통해 해결하는 문제들 대부분이 제대로 정의되지 않았다는 점에서 생각할 거리를 주는 문제이다.

내가 문제를 쉽게 해결해서 안좋은 문제가 아니라, 나의 접근과 분석방법, 예외를 생각하는 케이스가 아직 부족하다는 점을 깨달을 수 있었던 문제였다.

https://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

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

[Algorithm] RSA 암호  (0) 2022.07.17
[programmers] 시저암호  (0) 2022.07.14
[programmers] 예산  (0) 2022.07.12
[programmers] 최대공약수와 최소공배수  (0) 2022.07.11
[programmers] 3진법 뒤집기  (0) 2022.07.10

+ Recent posts