안녕하세요!
오늘은 생각하면 되게 간단한 코딩테스트를 들고왔습니다..!
처음에는 true면 그냥 더하고, false면 음수로 봐꿔줘서 더하면 되겠구나? 라고 간단하게 생각했는데
음수로 봐꿔주는 메서드가 있는건가? 문자열로 "-" 더해줄까?? 라고 생각을 깊게 하다보니 제대로 못풀고 있었습니다.
그러던 찰나에 "-1"을 곱하면 당연히 "음수"가 된다는 생각이 떠올랐습니다.
그리고 또 다른 난관에 부딪쳤는데,,
그럼 어떻게 합쳐서 더하지..? 생각했습니다.
(코딩을 막 배운 저라, 가끔씩 생각이 이상한쪽으로 깊게 생각하게 되더군요,,ㅎㅎ)
많은 생각과 고민을 한 만큼 오늘 코딩테스트는 한 번의 시도 끝에 통과했습니다!!
뭔가 생각한대로 한번에 통과하니깐 기분이 좋더라구요ㅎㅎ
이제 저 코드를 더 간단하게 할 방법이 있을까? 하고 다른 사람의 풀이를 찾아봤는데
제가 복잡하게 생각한게 맞더군요
그런데 "int answer;" 이렇게 선언만 하면 어차피 기본값이 0일텐데 왜 통과가 안될까..?????
답은 지역변수는 자동 초기화가 안된다는 것입니다...!!!(지역변수 : stack영역)
그래서 지역변수는 선언과 동시에 초기화를 꼭 해줘야 합니다.(=사용하기 전에 값이 할당 되어야 함)
반면, 멤버변수(Heap영역), 클래스변수(static영역)는 선언만 할 경우에는 밑에 이미지와 같이 '초기값'으로 자동초기화가 됩니다.
위에 내용을 토대로 이해해보면
int answer를 메서드영역 밖에 멤버변수로 선언할 경우, 테스트가 통과됩니다!!
오늘의 요약
지역변수는 초기값이 설정이 안되므로 꼭 선언 후에 초기화를 해줘야 한다.
'TIL(Today I Learned)' 카테고리의 다른 글
[Java/코딩테스트] 없는 숫자 더하기 (0) | 2024.08.13 |
---|---|
[MYSQL] DATETIME에서 DATE로 형 변환 (DATE_FORMAT) (0) | 2024.08.12 |
[MySQL/코딩테스트] NULL 처리하기(IFNULL, CASE, COALESCE 사용) (0) | 2024.08.08 |
[Java/코딩테스트] 서울에서 김서방 찾기 (0) | 2024.08.07 |
[Java/코딩테스트] 콜라츠 추측 (0) | 2024.08.06 |