> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.09.28.md).

# 2022.09.28

## 할일 및 한일&#x20;

* [x] 모바일 프로그래밍 실습 및 과제
* [ ] 모바일 프로그래밍 5장 notion 정
* [x] 알고리즘 문제 풀이

## 경험 및 배움&#x20;

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

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

### 알고리즘 문제 풀이&#x20;

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

조건은 다음과 같다.

**\[설명]**

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

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

**\[입력]**

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

**\[출력]**

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

**\[예시]**

* 입력 : a#b!GE\*T\@S
* 출력 : S#T!EG\*b\@a

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

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

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

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

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

{% embed url="<https://jinwonyoon.notion.site/flip-specific-character-4b38af2242474618b30752ba231a7873>" %}
algorithm&#x20;
{% endembed %}

## 개선 및 목표&#x20;

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