늦은 프로그래밍 이야기
230206 TIL (알고리즘, 프로젝트) 본문
알고리즘
JadenCase 문자열 만들기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
JadenCase란 주어진 문자열에서 맨 처음 글자와 띄어쓰기 이후에 첫번째 글자만 대문자이고 나머지 문자들은 소문자인 것을 말한다. toCharArray를 사용하지 않고 문자열인 상태에서 charAt 메소드를 사용하여 한글자씩 가져오는 방법으로 풀어보았다.
class Solution {
public String solution(String s) {
String answer = String.valueOf(s.charAt(0)).toUpperCase();
s = s.toLowerCase();
for (int i = 1; i < s.length(); i++) {
String cur = String.valueOf(s.charAt(i));
String before = String.valueOf(s.charAt(i - 1));
if (before.equals(" "))
answer = answer + cur.toUpperCase();
else answer = answer + cur;
}
return answer;
}
}
맨 앞의 글자는 항상 대문자이기 때문에 answer에 먼저 toUpperCase를 사용하여 넣어 놓고 문자열의 중간에 대문자인 문자가 있는 경우가 있으므로, 해당 문자열을 toLowerCase를 사용하여 모두 소문자로 만들어 준다.
반복문을 사용하여 첫번째 문자인 0번 인덱스를 제외하고 1번 인덱스부터 시작하여 현재 인덱스의 문자를 cur에 넣어주고, 이전 인덱스의 문자를 before에 담아준다. before가 띄어쓰기라면 현재 문자를 대문자로 바꿔준 뒤 넣어주고, 아니라면 그냥 소문자인 상태로 넣어준다.
다른 사람의 풀이
다른 사람의 풀이를 보다가 처음에는 split을 사용하여 띄어쓰기로 구분하여 문자들을 자른줄 알았는데, 자세히 보니 “”를 사용하여 toCharArray를 사용한 것과 같은 효과인듯 보이나 toCharArray는 char 타입에서 String 타입으로 바꿔줘야 하므로 타입을 유지한채 한글자씩 배열에 넣을 수 있는 좋은 방법을 알게 된 것 같다.
class Solution {
public String solution(String s) {
String answer = "";
String[] sp = s.toLowerCase().split("");
boolean flag = true;
for(String ss : sp) {
answer += flag ? ss.toUpperCase() : ss;
flag = ss.equals(" ") ? true : false;
}
return answer;
}
}
나머지는 모두 같은 방식으로 풀어 나간것 같은데 before를 사용하지 않고 boolean 타입을 사용하고, 삼항연산자로 보기 좋게 풀었다는 것이 다른 점이었다.
다음 기회에 boolean을 사용하여 문제를 풀어보도록 해야할 것이다.
프로젝트
오늘부터 최종 프로젝트가 시작되었다. 한 반에서 지원자 5명을 뽑아서 챌린지 팀을 만들어 다른 팀들에 비해 조금 더 어려운 기능들을 구현하는 팀을 만든다고 해서 지원하여 우연히 뽑히게 되어서 잘하는 사람들과 같이 프로젝트를 할 수 있는 좋은 기회를 갖게 되었다.
프로젝트 주제가 자유여서 팀원들의 아이디어를 모아 주제를 정하는데 시간을 꽤 소비했다. 우리 팀이 정한 주제는 원격으로 음식점 웨이팅을 할 수 있는 테이블링의 기능을 클론 코딩 하기로 하였다.
https://nervous-linseed-2d2.notion.site/S-A-e0603e170f0f4a9da949ad475682a2d9
[챌린저스] S.A. 문서
프로젝트 기획서
nervous-linseed-2d2.notion.site
첫날이다 보니 S.A. 문서를 작성하는 시간을 가지고 프로젝트를 설계하고 계획하는 시간을 가지게 되었다. 필요한 기능들을 모두 적어보고 MVP 구현을 위한 최소기능을 추리는 과정도 진행하였다. 테이블링의 가장 핵심 기능이라고 생각되는 원격 웨이팅에 관련된 기능들을 최소기능으로 설정하였고, 원격 웨이팅과 밀접한 관련이 없다고 생각되는 기능들은 추가 기능으로 구분해 놓았다.
이번 프로젝트는 프론트도 같이 구현해야 해서 와이어프레임을 작성하였고, 프로젝트의 전체적인 이해를 위해 팀원들과 함께 ERD를 작성하였다. 작성하다 보니 ERD의 사이즈가 거대해져서 모두 끝내지는 못하고 고민할 필요가 있는 부분은 남겨두고 팀원들과의 회의를 통해 결정하기로 하였다.
'내일배움캠프 > TIL, WIL' 카테고리의 다른 글
| 230208 TIL (알고리즘, 프로젝트) (0) | 2023.02.08 |
|---|---|
| 230207 TIL (알고리즘, 프로젝트) (0) | 2023.02.07 |
| 230203 TIL (알고리즘) (0) | 2023.02.04 |
| 230202 TIL (JPA 심화) (0) | 2023.02.03 |
| 230201 TIL (JPA 심화) (0) | 2023.02.01 |