-
5월 31일 수요일 TIL 회고록카테고리 없음 2023. 5. 31. 21:42
프로그래머스 코딩테스트 Lv 1
이상한 문자 만들기
문제 설명, 제한 사항 및 입출력 예
풀이
class Solution { public String solution(String s) { String answer = ""; int count = -1; String[] split = s.split(""); for (int i = 0 ; i < split.length; i++) { count++; if (split[i].equals(" ")) { count = -1; answer += " "; } else if (count % 2 == 0) { answer += split[i].toUpperCase(); } else if (count % 2 == 1) { answer += split[i].toLowerCase(); } } return answer; } }
1. 단어를 카운트 할 int형 count를 선언했다.
2. .split("")를 사용하여 단어를 잘랐다. (큰따음표를 공백없이 사용하면 한글자씩 단어가 잘린다. ex) love = l,o,v,e)
3. split.length까지 반복문을 사용했다. 반복문이 실행되면 count가 1씩 오른다.
4. if문을 사용해서 split[i]가 " "이면 count를 다시 -1로 선언하고 answer 값에 " " 을 추가한다. answer에 띄어쓰기를 넣는다고 생각하면 이해가 더 잘 된다.
5. else if문을 사용해 count를 2로 나눈 나머지가 0이면 (짝수이면) toUpperCase() (대문자로 바꿔주는 기능) 를 사용해 answer 값에 split[i]를 대문자로 바꾼 값을 넣어준다.
5. else if문을 사용해 count를 2로 나눈 나머지가 1이면 (홀수이면) toLowerCase() (소문자로 바꿔주는 기능) 를 사용해 answer 값에 split[i]를 소문자로 바꾼 값을 넣어준다.
6. answer를 리턴한다.
count를 -1로 한 이유는 단어의 첫번째 글자는 무조건 대문자가 나와야 하므로 count를 -1로 선언하게 된다면 반복문을 사용해서 count를 증가시킬때 첫번째 글자의 count는 0이므로 0 % 2 의 나머지는 0이므로 대문자로 변경되고 그 다음 글자는 정상적으로 소문자로 변환되기 때문에 count를 -1로 선언했다.
개인 프로젝트 진행 중 쿼리를 고쳐서 실행은 되나 댓글 작성을 하려하면
Modifying queries can only use void or int/Integer as return type; Offending method: public abstract java.lang.Long com.luda.comment.repository.CommentRepository.findByNvlRef(java.lang.Long)] with root cause 에러가 나오면서 댓글 작성이 안된다.
다른 findBy 쿼리도 똑같이 Long 타입으로 했는데 이거만 이런 오류가 나온다. 너무 험난하다... ㅋㅋㅋ..