문자열 5

[Java] 백준 20291번 : 파일

문제 https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 풀이 과정 TreeMap은 내부적으로 레드-블랙 트리 구조를 갖추고 있어, 정렬한 자료가 필요할 때 유용하다. 따로 key를 복사해서 정렬하지 않고, 값을 넣으면서 Entry자체를 정렬하는 것이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Map; import java.util.TreeMap; ..

[Java] 프로그래머스 : 가장 큰 수

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 처음 생각했던 방법은 숫자들의 자리 수를 다 맞추는 것을 생각했는데, 3442, 33 일 때는 3442 > 3300으로 제대로 적용되나 3223, 32일 때는 3223 > 3200이지만 322332보다 323223이 더 크게 되어 원하는 결과를 도출할 수 없었다. 그래서 다른 사람의 코드를 대략적으로 보고난 후, 좀 더 직관적으로 생각해서, 두 숫자 중 어..

[Java] 백준 2607번 : 비슷한 단어

문제 https://www.acmicpc.net/problem/2607 2607번: 비슷한 단어 첫째 줄에는 단어의 개수가 주어지고 둘째 줄부터는 한 줄에 하나씩 단어가 주어진다. 모든 단어는 영문 알파벳 대문자로 이루어져 있다. 단어의 개수는 100개 이하이며, 각 단어의 길이는 10 이 www.acmicpc.net 풀이 과정 코드를 작성하기 전에는 각 문자를 인덱스로 써서 문자별 개수를 cnt하고 이를 비교해야겠다까지 설계하고 시작했다. 하지만, 첫 번째 문자열 길이가 더 큰지, 주어지는 문자열 길이가 더 큰지 등 조건까지 같이 떠올리는 연습이 필요한 것 같다. 아래는 문자열 길이 차이가 2이상이면 비교 연산없이 다음 문자열로 넘어간다. 2미만이면 같은 문자의 개수가 몇 개인지 count하여 주어진 ..

[Java] 백준 19583번 : 싸이버개강총회

1. 문제 https://www.acmicpc.net/problem/19583 19583번: 싸이버개강총회 첫번째 줄에는 개강총회를 시작한 시간 S, 개강총회를 끝낸 시간 E, 개강총회 스트리밍을 끝낸 시간 Q가 주어진다. (00:00 ≤ S < E < Q ≤ 23:59) 각 시간은 HH:MM의 형식으로 주어진다. 두번째 줄부터는 www.acmicpc.net 2. 풀이 과정 시간을 ":"을 기준으로 잘라서 int로 변환하여 분단위로 비교하였다. 시작시간보다 빨리 채팅을 친 사람들을 Set에 넣으며 중복 제거를 함께 해주었다. 종료시간과 스트리밍 종료시간 사이에 채팅을 친 사람은 Set에서 빼주면서 결과값을 구하였다. 추가적으로 입력이 언제 종료되는지 모르기 때문에, EOF검사를 해주어야 한다. Scann..

[JAVA] 문자열 처리

1. 문자열 복사 1. System.arraycopy - parameter = (뭐를, 어디서부터, 어디로, 어디서부터, 몇 개) int[] arr = {1, 2, 3, 4, 5, 6}; int[] brr = {10, 20, 30, 40, 50, 60}; System.arraycopy(brr, 0, arr, 0, 3); 2. Arrays.copyOf - parameter = (뭐를, 몇 개) - 내부적으로 System.arraycopy를 호출 - 복사해서 새로운 객체를 만들어 그대로 할당 = brr을 갈아 엎는다. int[] arr = {1, 2, 3, 4, 5, 6}; int[] brr = {10, 20, 30, 40, 50}; brr = Arrays.copyOf(arr, arr.length); //b..

CS/기타 2022.02.05