본문 바로가기
TIL & WIL

[TIL] #49. 231101

by mmm- 2023. 11. 1.

어제 목표 & 오늘 완료한 한 일 

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 스프링 입문 강의 (1주차) ➡️ 진행중


내일 목표

  • 알고리즘 문제
  • 자바 종합 문법 복습 (3주차)
  • 스프링 입문 강의 (1주차)

 

오늘 배운 내용 

 

[Spring] Spring MVC

MVC : Model-View-Controller 의 약자. 소프트웨어 디자인 패턴 중 하나. 소프트웨어를 구성하는 요소들을 Model, View, Controller로 구분하여 각각의 역할을 분리 코드의 재사용성과 유지 보수성을 높여 개발

mstudy-recode.tistory.com

 

발생한 문제와 해결

Execution failed for task ':test'.> There were failing tests. See the report at:

> Run with --scan to get full insights.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

build를 했더니 위와 같은 에러가 발생했다. 서치해서 나온 방법 이것저것 해봤는데도 불구하고 에러가 해결되지 않았다. 살펴보니 gradle 버전이 맞지 않아서 그런건가 싶어 gradle-wrapper.properties에서 버전도 변경해봤는데 여전히 위와 같은 오류가 발생했다. 

여러 가지를 해봤는데도 해결되지 않아 튜터님께 질문을 드리러 갔다. 튜터님이 하나하나 다 봐주시고 알려주셔서 이것저것 해봤는데도 불구하고 해결이 되지 않았다. 

build.gradle에서 

tasks.named('test') {
    useJUnitPlatform()
}

해당부분을 주석처리하니까 되긴했지만 일단 올바른 방법은 아니라고 하신 걸로 기억한다. 결국에는 강의듣고 있으면 깃허브에 올린 코드 봐주시겠다고 하셨다. 

잠시 뒤, 튜터님이 슬랙으로 보내주신 블로그에서 이야기한 것처럼 test에도 application.properties 파일을 넣어주니 위의 주석처리한 부분의 주석을 풀어도 오류가 발생하지 않는 것을 확인할 수 있었다..! 튜터님 감사합니다..🥹

 

느낀점

원래 1-12까지는 강의를 듣는 것이 오늘 목표였는데, 위에서 얘기했던 오류에 생각보다 시간을 많이써서 계획한 것만큼 강의를 듣지 못했다.

오늘 알고리즘 문제는 아스키코드와 문자를 변환하기만 하면 쉽게 해결될 수 있을 거라고 생각했는데 아니었다. 알 것 같으면서 모르겠다는 생각만 들었다.

def solution(s, n):
    answer = ''
    s_list = list(s)
    
    for i in range(len(s_list)):
        if s_list[i] == " ":
            answer += " "
        elif ord(s_list[i])+n > 122 or ord(s_list[i])+n > 90:
            answer += chr(ord(s_list[i]) + n - 26)
        else:
            answer += chr(ord(s_list[i]) + n)
    
    return answer

이와같이  코드를 작성하였더니 112와 97 사이에 있는 수 여도 elif문이 실행됐다. 그래서 고민하던 중 생각을 조금만 바꿔 아래와 같이 작성하였더니 

def solution(s, n):
    answer = ''
    s_list = list(s)
    
    for i in range(len(s_list)):
        move = ord(s_list[i])+n
        
        if s_list[i] == " ":
            answer += " "
        elif 65 <= move and move <= 90:
            answer += chr(move)
        elif 97 <= move and move <= 122:
            answer += chr(move)
        else:
            answer += chr(move - 26)
    
    return answer

 원래 발생했던 문제는 해결되었으나 다시 새로운 문제가 발생했다. 만약 대문자 0에서 25씩 미루는 것이면 소문자로 변환된다는 것이었다. 그래서 아래와 같이 elif문에 조건을 추가해줬더니 문제를 해결할 수 있었다.

        elif 65 <= move and move <= 90 and s_list[i].isupper():
            answer += chr(move)
        elif 97 <= move and move <= 122 and s_list[i].islower():
            answer += chr(move)

그런데 가독성이 떨어지는 코드라는 생각이 들어 코드를 좀 더 깔끔하게 수정하고 싶었으나 이 이상으로 깔끔하게 작성하는 법을 잘 모르겠어 그냥 제출했다. 다음 번에는 깔끔한 좋은 코드를 빠른 시간내에 완성하고 싶다.

 

'TIL & WIL' 카테고리의 다른 글

[TIL] #51. 231103  (0) 2023.11.03
[TIL] #50. 231102  (0) 2023.11.02
[TIL] #48. 231031  (0) 2023.10.31
[TIL] #47. 231030  (1) 2023.10.30
[WIL] #7. 231023~231029  (0) 2023.10.29