# 2022.09.21

## 할일 및 한일&#x20;

* [x] 모바일 프로그래밍 4장(레이아웃) 공부 및 notion 정리&#x20;
* [x] 모바일 프로그래밍 과제&#x20;
* [x] 인프런 알고리즘 문제 풀이&#x20;

## 경험 및 배움&#x20;

오늘은 오전에 모바일 프로그래밍 수업을 듣고, 오후에는 내내 실습 제출 및 과제를 하고, 저녁에는 알고리즘 문제 풀이를 하였다.

### 모바일 프로그래밍 4장(레이아웃)

이번 단원에서는 **뷰들을 배치하는 다양한 레이아웃**들에 관해 배웠다. 대표적으로 많이 쓰이는 레이아웃은 `LinearLayout` , `ConstraintsLayout` 이 있다.

레이아웃등을 배우다 보니 랩실에 들어온 초기에 배운 HTML과 매우 유사하다는 생각을 하였다. 테이블을 꾸미는 방법도 그렇고 태그를 사용하는 점도 비슷한 것 같다.

과제를 하다 보니 중첩 선형 레이아웃에서 시간을 많이 소비했다. 아직도 정확한 기준을 모르겠다. 어떻게 코드를 짜냐에 따라 시작점도 달라지고, 다른 뷰들을 가리는지도 달라지고, 여러 것들이 모호하다. 이건 많이 실습을 하고 코드를 짜보며 파악해야 할 것 같다.

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

{% embed url="<https://jinwonyoon.notion.site/Chapter-4-c05dff919d4944a391ffd538dd6e775b>" %}

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

오늘 어제 사용했던 메소드와 비슷한 메소드를 사용하여, 입력받은 문자열의 대소문자를 구분해서 대문자는 소문자로, 소문자는 대문자로 변경하는 알고리즘 문제였다.

문제의 조건은 다음과 같다.

**\[설명]**

**대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램**을 작성하세요.

**\[입력]**

첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.

문자열은 영어 알파벳으로만 구성되어 있습니다.\\

**\[출력]**

첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.\\

**\[예시]**

* 입력 : StuDY
* 출력 : sTUdy

풀이할 때는 입력받은 문자열을 향상된 `for` 문으로 원소 하나하나 탐색하여 반복문을 사용하고, `if` 문을 사용하여 소문자 일시 대문자로 변경하고, 그 외의 경우일시 소문자로 변경하는 코드를 작성하였다.

이번에 새로 배운 메소드는 **`isLowerCase()` , `isUpperCase()`** 이다. **소문자인지 대문자인지 판별하여 `true` , `false` 를 리턴해주는 메소드**이다.

기본적은 방법 이외에, 한 가지 방법을 더 알게 되었다. 생각지도 못했던 방법인데 다른 문제를 풀 때 한번쯤은 유용하게 쓰일 것 같다.

아스키 코드를 이용한 방법으로, 아스키 코드에서 소문자는 97\~122, 대문자는 65\~90이라고 한다. 그래서 둘의 차이가 32인것을 이용한 방법으로, 같은 `if` 문을 이용해서 변수에 대입해 자동 타입 변환을 이용한다. 그래서 97\~122인 경우에는 -32를 해서 대문자로, 65\~90일 경우에는 +32를 해서 소문자로 만들어준다.

자세한 내용은 notion과 github에 기록해두었다.

{% embed url="<https://jinwonyoon.notion.site/letter_convert-a4162926c2d64e2285ef9800729e6ac9>" %}

## 개선 및 목표&#x20;

* 너무 많은 일을 나에게 맡기는 것인지 내가 느린 것인지 모르겠다.. 다른 여유를 가질 시간이 없다.&#x20;
