일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 교육철학과 교육사
- 내돈내산
- java
- Spring
- 제로베이스
- 탐색알고리즘
- webServlet
- BFS
- 그래프탐색
- 프로젝트진행
- YBM전화영어
- 탄력근무
- OpenAPI프로젝트
- maven
- array
- 전화영어
- 백엔드스쿨
- 최단경로문제
- 자료구조
- 시급합니다
- 자바스크립트
- 개발자
- npm
- 원격근무
- Node.js
- 백엔드
- OAuth
- Queue
- 백엔드공부
- JavaScript
- Today
- Total
인생자취
일치하는 문자열을 내림차순으로 정렬하기 본문
문자열이 숫자로만 이루어진 조건에서 두 문자열이 일치하는 수만큼을 출력 하는 경우가 존재하고, 그 숫자들이 반환될 때 내림차순으로 정렬되어 반환되어야 한다고 가정해보자. 이와 관련하여 문제 해결 방법을 떠올리는 것은 다음과 같다.
[아이디어 1] 문자열을 비교할 때 내림차순으로 비교 ; for(int i=9, i>=0, i--)
- valueOf : String.valueOf(int a)를 사용하여 int 값을 문자열로 변환한다. 반복자를 문자열로 반환한다. 이와 같은 리턴값을 내는 메서드는 Integer의 toString(int i)이 있다.
public static String valueOf(int i)
- charAt : 특정 위치의 문자열을 확인할 때, char 타입으로 반환하는 String의 charAt method를 사용한다.
public char charAt(int index)
[아이디어 2] 특정 문자열이 포함된 개수를 센다.
- split : regex에 문자열을 파라미터로 하고, limit 개수 만큼을 String array로 생성한다. 그런데 limit에 음수를 대입하면 특정 문자열이 있는 부분을 잘라서 String array에 원소로 대입된다. 이때, String타입 array의 길이에서 1을 뺀 값이 특정 문자열이 있는 개수와 일치함을 활용한다.
public String[] split(String regex, int limit)
[아이디어 3] 중복된 문자열의 수가 2개 이상인 경우에는 repeat method를 사용한다.
- repeat : count 파라미터만큼 문자열을 반복해서 반환한다.
따라서 원하는 개수만큼 최종 반환하는 값에 추가한다.
public String repeat(int count)
문제을 제출한 이후에 내용을 정리하면서 string 연산을 하는 부분에서 메모리 이슈가 발생할 수도 있다는 것을 알게 되었다. 본 내용은 제한사항이 10개의 반복자에 한해서 문자열을 추가한 것이다. 하지만 문자열 연산을 더 빈번하게 사용하게 되는 경우에는 StringBuilder를 사용해야 성능에 더 유리한 로직이 된다.
- StringBuilder : 변경 가능한 문자열을 다룰 때 사용하는 클래스다. 혹시 몰라서 stringbuilder를 사용하여 로직을 수정해보니, 성능이 확연하게 차이나는 것을 발견했다.
public StringBuilder(String str)
public StringBuilder append(String str)
성능 비교는 다음과 같다.
Stringbuilder를 사용하여 append로 문자열을 추가한 경우에 성능이 확실히 개선되긴 했다.
코딩테스트 문제를 풀 때 사용한 개념들을 정리해봤다. 아이디어의 흐름을 이해하고, 아이디어마다 사용되는 method를 적절하게 사용하여 문제에서 요구하는 개념을 바로 인지할 수 있도록 더 연습해야 할 것이다.
참고문헌 : api documentations Java
'개발 > Dev | 코딩테스트' 카테고리의 다른 글
BOJ | Gold 4/11657/타임머신 (0) | 2023.07.14 |
---|---|
BOJ | Silver 1/1932/정수 삼각형 (0) | 2023.07.05 |
Programmers | Lv.2 / 주차 요금 계산 (0) | 2023.07.05 |
합해서 특정 값이 되는 경우 찾기 (0) | 2023.05.28 |
두 분수를 더하는 방법 (0) | 2023.05.28 |