728x90
첫 코딩 테스트를 보고 왔습니다.
일단 알고리즘 위주로 공부했는데 생각했던(내가 공부했던 문제들이 안나왔습니다....🥲)
또 시간도 생각보다 촉박한 느낌이어서 많이 고민을 못했습니다..ㅜ
SQLD 개발자 공부할 때 사용했던 친구들이 많이 나온것 같습니다.
좋은 경험이었습니다.
이 글에선 정확하게는 기억이 안나서 대충 기억나는 대로 대충 비슷하게 만들어서 정리해볼 겁니다.
(2번 문제는 기억안남)
(그리고 모델링 문제는 상세하기 적기 그래서ㅜㅜ 노션에만 따로 정리하는 걸로!)
일단 Java, MySQL을 사용해 코드를 작성합니다.
1. 999999999가 999,999,999로 출력되게 코드 작성하라.
( DecimalFormat을 사용하지 말고 작성해라. )
- 내가 작성한 코드..(완전 잘못했네..챙피해..)

- 내가 원했던 코드

- StringBuilder로 빈 문자열 생성하고 sb로 저장한다.
- for 문을 사용하여 문자열 a의 마지막 인덱스부터 순회한다.
- sb.insert(0, a.charAt(i)로 sb에 a의 현재 문자를 맨 앞에 추가한다. 문자열이 역순으로 저장된다.
- if(count % 3 == 0 0&& i > 0)로 i 가 0보다 크면 작업을 수행한다.
- sb.insert(0, ",") sb의 앞에 쉼표(,)를 추가한다.
- 회사에서 원한 코드(정규식을 사용해서 코드 작성하기)

- "(\\d)(?=(\\d{3}) + $), "$1,""
- (\\d) : 숫자에 대응하고, 괄호로 감싸면 그룹화 된다.
- (?=(\\d{3}) + $) : 숫자 3자리마다 쉼표를 추가하기 위해 양수형 전방탐색을 사용하고, 쉼표를 추가할 위치를 찾는다.
- $1, : 그룹 1에 해당하는 숫자 뒤에 쉼표를 추가한다.
- (\\d) : 숫자에 대응하고, 괄호로 감싸면 그룹화 된다.
- DecimalFormat을 이용한 코드

- DecimalFormat으로 숫자 포맷을 정리한다. 패턴은 세자리마다 쉼표를 추가한다. 숫자가 세자리 미만이면 추가하지 않는다.
- formatA = df.format(a)로 df를 사용하여 정수 a를 포맷팅하여 문자열로 변환하고, formatA에 저장한다.
생각만 잘했으면 for문으로 풀 수 있었을 것 같은데 너무 아쉽다.
솔직히 정규식이랑.. DecimalFormat은 생각도 못하고 있었는데 하나 배우고 간다.
2. 논리 모델 작성하는 문제
- 나는 개념모델로 작성했다.. 엔티티와 관계 위주의 모델링으로..
이번을 계기로 모델링에 대해 다시한번 공부 할 수 있었습니다.
3. 2번문제에서 모델링한 결과로 A의 정보에서 값을 더하는 문제
- SQL에 대한 공부를 좀 더 해야겠습니다.