🙂2022.09.28

일일 회고 48일차

할일 및 한일

경험 및 배움

모바일 프로그래밍 5장(고급 위젯 다루기)

오늘은 좀 더 어려운? 위젯에 대해 다뤄보았다. html을 공부할 때와 비슷한 RadioButton , ToggleButton , CheckBox 등을 실습하고, 터치 이벤트와 PaintCanvas 를 이용해서 선을 그리는 등의 작업들을 해보았다. 이제 갈수록 점점 어려워지는 것 같다. 로직을 짜기에는 어렵지 않은데, 여러 속성들과 위젯들을 외워서 배치하는 것들이 조금 헷갈린다. 이제 중간 고사가 얼마 남지 않았는데 실습을 많이 해보아야겠다.

알고리즘 문제 풀이

오늘 풀었던 알고리즘 문제는 문자열을 입력 받아서 특수 문자들은 빼고, 알파벳들만 서로 위치를 뒤집어서 바꾸는 문제였다.

조건은 다음과 같다.

[설명]

영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고,

특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력하는 프로그램을 작성하세요.

[입력]

첫 줄에 길이가 100을 넘지 않는 문자열이 주어집니다.

[출력]

첫 줄에 알파벳만 뒤집힌 문자열을 출력합니다.

[예시]

  • 입력 : a#b!GE*T@S

  • 출력 : S#T!EG*b@a

이 문제를 풀려면 Character 클래스의 isAlphabetic 메소드를 이용해야 한다. 이 메소드를 이용하면 문자가 알파벳일 때만 true 를 리턴한다.

그리고 마지막에 정답을 넣는 변수인 answervalueOf() 메소드를 사용하여 char 타입 배열을 String 문자열로 변경하는데, 이걸 toString() 으로 변경해도 되지 않을까? 라는 생각을 하여 변경해보았더니 이상한 16진수 값이 출력이 되었다.

그 이유는 toString() 을 사용하려면 toString() 메소드를 꼭 오버라이드해주어야 한다고 한다. 그렇지 않으면 Object 클래스의 해쉬코드 값이 출력된다고 한다.

그래서 한 가지 더 의문점이 그럼 이전에 풀었던 문제에서 StringBuilder 를 사용할 때는 오버라이드 없이 toString() 을 사용했는데 그건 뭐지? 라는 생각이 들어서 StringBuilder 도큐먼트를 보았더니 애초에 이 메소드 안에는 toString() 을 오버라이드 한 것이 내장되어 있어서 오버라이딩을 할 필요가 없었던 것이다. 앞으로 알고리즘 문제를 풀 때도 중요한 정보가 될 것 같다.

자세한 내용은 notion 링크를 첨부한다.

개선 및 목표

  • 전공 시험이 열흘 앞으로 다가왔다. 이번 전공들은 유난히 익숙치 않게 다가 오니 리미리 조금씩 시작하자.

Last updated