TIL(Today I Learned)

[Java/코딩테스트] 음양 더하기 ( + 지역변수에 대하여)

yunseohhe 2024. 8. 9. 11:57

안녕하세요!

오늘은 생각하면 되게 간단한 코딩테스트를 들고왔습니다..!

 

 

문제 1
문제 2

 

처음에는 true면 그냥 더하고, false면 음수로 봐꿔줘서 더하면 되겠구나? 라고 간단하게 생각했는데

음수로 봐꿔주는 메서드가 있는건가? 문자열로 "-" 더해줄까?? 라고 생각을 깊게 하다보니 제대로 못풀고 있었습니다.

 

그러던 찰나에 "-1"을 곱하면 당연히 "음수"가 된다는 생각이 떠올랐습니다.

 

그리고 또 다른 난관에 부딪쳤는데,,

그럼 어떻게 합쳐서 더하지..? 생각했습니다.

(코딩을 막 배운 저라, 가끔씩 생각이 이상한쪽으로 깊게 생각하게 되더군요,,ㅎㅎ)

 

 

많은 생각과 고민을 한 만큼 오늘 코딩테스트는 한 번의 시도 끝에 통과했습니다!!

결과 1
결과 2

 

뭔가 생각한대로 한번에 통과하니깐 기분이 좋더라구요ㅎㅎ

이제 저 코드를 더 간단하게 할 방법이 있을까? 하고 다른 사람의 풀이를 찾아봤는데

제가 복잡하게 생각한게 맞더군요

 

다른 사람 풀이 2

 

그런데 "int answer;" 이렇게 선언만 하면 어차피 기본값이 0일텐데 왜 통과가 안될까..?????

 

답은 지역변수는 자동 초기화가 안된다는 것입니다...!!!(지역변수 : stack영역)

그래서 지역변수는 선언과 동시에 초기화를 꼭 해줘야 합니다.(=사용하기 전에 값이 할당 되어야 함)

 

반면, 멤버변수(Heap영역), 클래스변수(static영역)선언만 할 경우에는 밑에 이미지와 같이 '초기값'으로 자동초기화가 됩니다.

초기값

 

 

위에 내용을 토대로 이해해보면

int answer를 메서드영역 밖에 멤버변수로 선언할 경우, 테스트가 통과됩니다!!

멤버변수로 선언

 


오늘의 요약

지역변수는 초기값이 설정이 안되므로 꼭 선언 후에 초기화를 해줘야 한다.