본문 바로가기

전체보기

(126)
[프로그래머스] 신규 아이디 추천 / 2021 KAKAO BLIND RECRUITMENT - JAVA 🔗 문제 링크 [프로그래머스] 신규 아이디 추천 / 2021 KAKAO BLIND RECRUITMENT 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr 📝 풀이 과정 문제를 보고 정규식을 활용할 수 있는 문제라고 생각해 정규식을 사용하기로 했다. 조건을 차례대로 보면, 1번은 toLowerCase()를 사용해 문자열을 소문자 형태로 변경이 가능하다 2번부터 4번까지는 replaceAll(regex, replacement)를 사용했는데 regex에 변경하고자하는 정규식을 입력하고 replacement에 변경..
[프로그래머스] 파일명 정렬 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA 🔗 문제 링크 [프로그래머스] 파일명 정렬 / 2018 KAKAO BLIND RECRUITMENT(3차) 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 📝 풀이 과정 파일명의 문자열을 파싱하여 head, num을 추출한 뒤 정렬해야했기 때문에 문자열을 패턴으로 파싱할 수 있는 Pattern, Matcher 클래스를 사용하였다.(참고: [Java] Pattern, Matcher Class로 정규식 활용하기) Pattern pattern = Pattern.compile("(?\\D+)(?\\d+)(...
[프로그래머스] n진수 게임 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA 🔗 문제 링크 [프로그래머스] n진수 게임 / 2018 KAKAO BLIND RECRUITMENT(3차) 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 📝 풀이 과정 n진수로 이루어진 숫자를 차례대로 붙인 문자열을 구한 뒤 튜브가 말할 순서마다 뽑아서 붙이는 방식을 사용하였다. 구할 개수 t개에 인원은 총 m명이므로 구해야 할 숫자는 t * m보다 작다는 것을 알 수 있기 때문에 1부터 t*m까지의 숫자를 n진수로 변환한 뒤 문자열에 붙이기위해 String.toString(int n, int..
[프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) - JAVA 🔗 문제 링크 [프로그래머스] 압축 / 2018 KAKAO BLIND RECRUITMENT(3차) 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 📝 풀이 과정 문자열을 반복해서 사전에 넣고 찾는 작업을 해야하고, String(문자열)과 int(색인 번호)를 동시에 저장할 수 있는 Map을 사용하기로 했다. 길이가 1인 문자열을 모두 넣어주기 위해 반복문을 돌며 Map.put 해주었고, 입력 문자열을 하나씩 끊어 반복문을 돌며 탐색하였다. map.containsKey를 통해 만약 현재 key가 사전에 없을 때까지 뒤에 덧붙이는 방식..
[백준] 11779번: 최소비용 구하기 2 - JAVA 🔗 문제 링크 BOJ 11779번: 최소비용 구하기 2 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 📝 풀이 과정 다익스트라로 + 경로를 구하는 문제이다. 다익스트라는 dist 배열을 통해 현재 노드에서부터 다음 노드로 이동하는 비용이 최소 비용이 될 때 갱신하는 방법을 사용하는데, 이 때 거리를 갱신하면서 현재 노드의 위치를 함께 저장하면 경로를 구할 수 있다. 만약, 1번에서 3번으로 이동했다면 3번 전에 1번 노드를 방문했다는 의미가 되고, prev[3] = 1가 되는 ..
[Java] Pattern, Matcher Class 사용법과 메소드 정리 자바에서는 정규식을 활용해 문자열을 검증, 탐색을 돕는 Pattern, Matcher 클래스를 제공해준다. 다음에도 쉽게 활용할 수 있도록 정리하려고 한다. 👨‍🏫 클래스 분석 Pattern 정규 표현식이 컴파일된 클래스. 정규 표현식에 대상 문자열을 검증하거나, 활용하기 위해 사용되는 클래스이다. 주요 메소드 static Pattern compile(String regex) 주어진 정규식을 갖는 패턴을 생성 String pattern() 컴파일된 정규 표현식을 반환 Matcher matcher(CharSequence input) 패턴에 매칭할 문자열을 입력해 Matcher를 생성 static boolean matches(String regex, CharSequence input) 정규식과 문자열이 일치..
[Java] 정규식 문법 정리(Regex) 📝 문법 Character \\ 백슬래시(\) 문자 \t tab(탭) 문자 \n newline 문자(ex. 엔터) \r carriage-return 문자 \d 숫자 : [0-9] \D 숫자를 제외한 모든 문자 : [^0-9] \s 공백 문자 : [ \t\n\x0B\f\r] \S 공백이 아닌 문자 : [^\s] \w 숫자나 영어, _(under-bar) : [a-zA-Z_0-9] \W 숫자나 영어, _가 아닌 모든 문자 : [^\w] . 모든 문자 💡 정규식에서 특수문자를 사용해 검색하고 싶은 경우? 모든 문자를 검색한다는 의미의 *과 Character '*'을 구분할 수 없기 때문에 \\를 붙여 사용해야 한다. * → \\* Character Class [] 문자를 하나의 집합으로 묶는다 [abc] a,..
[백준] 10830번: 행렬 제곱 - JAVA 🔗 문제 링크 BOJ 10830번: 행렬 제곱 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 📝 풀이 과정 [백준] 1629번: 곱셈 - JAVA에서 확장된 문제다. 거듭제곱을 분할 정복으로 계산하는 같은 방식의 문제이지만, 행렬이라는 조건이 추가되었다. 행렬의 곱셈에서 A x B의 (i, j)의 값을 구하기 위해서는 A의 i열의 곱과 B의 j행의 곱을 순차적으로 더해 구해야 한다는 것을 이용해 곱셈하는 함수인 multipleMatrix(m1, m2)를 만들어 주었다. 기존 거듭제곱 문제에서는 거듭 제곱값으로 주어진 값이 ..