목록CodingTest (430)
기록방
👉 문제링크 1235번: 학생 번호 첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부 www.acmicpc.net 🔸 문제 분석 🔸 학생번호를 중복되지 않도록 가장 짧게 만들 수 있는 길이를 출력한다. 번호를 줄일때는 왼쪽수 부터 버린다. 🔸 문제 풀이 🔸 학생 번호 문자열의 끝 부분에서 하나씩 길이를 늘려가며 중복되는 문자열이 있는지 확인해야한다. 끝 부분에 있으면 접근이 어려울 것 같아 문자열을 뒤집어서 저장 후 중복을 확인했다. 중복확인을 위해 문자열을 1부터 N-1까지 잘라가며 Set에 넣고 확인했다. 🔸 코드 🔸 import java.io.Bu..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 각 작업의 개발 진행도와 하루동안 진행 할 수 있는 개발 진도율이 주어진다. 작업 순서대로 배포되어야 하며, 배포 시점에 개발 진행도 100%라면 함께 배포 할 수 있다. 배포되는 작업의 개수 배열을 출력한다. 🔸 문제 풀이 🔸 개발을 진행한 날짜를 하루 진행 개발 진도율과 곱해, 개발이 완료됐는지 혹은 얼마나 남았는지 계산한다. 개발이 완료된 것들은 연속된 수를 카운트한다. 개발이 완료되지 않았으면, 이전에 쌓아둔 카운트를 정답 배열에 저장해놓고, 카운트를 0으로 돌린 뒤 날짜..
👉 문제링크 1418번: K-세준수 첫째 줄에 N, 둘째 줄에 K가 주어진다. N은 100,000보다 작거나 같은 자연수이고, K는 100보다 작거나 같은 자연수이다. www.acmicpc.net 🔸 문제 분석 🔸 어떤 자연수의 소인수중 최대값이 K보다 크지 않으면 K-세준수이다. N이하의 자연수 중에 K-세준수의 개수를 구한다. 🔸 문제 풀이 🔸 1부터 N까지의 자연수들 각각 최대 소인수를 구하고, 그 값이 K를 넘는지 확인해야 한다. 소인수 인지 확인하기 위해 자연수를 N까지 키워간다. 현재 수가 소인수이면 그 수의 N보다 작은 배수들은 현재 수를 소인수 최대값으로 저장한다.(에라토스테네스의 체) 만약 현재 수가 이전에 배수로 소인수를 구했으면 그 수와 K를 비교하고, 이전에 구한 값이 없으면 현재 ..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 캐시 교체 알고리즘 중 LRU (Least Recently Used)를 구현하는 문제이다. 🔸 문제 풀이 🔸 크기 제한이 있는 큐 형태에서 가장 사용한지 오래 된 도시 이름을 먼저 지워주는 방식으로 구현한다. cache hit일 경우는 해당 도시 이름을 가장 최근에 사용한 것으로 옮겨주어야 한다. 도시 이름이 대소문자를 구분하지 않아야 하고, cacheSize가 0이 될 수 있음에 유의한다. 🔸 코드 🔸 import java.util.ArrayDeque; import java.u..
👉 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔸 문제 분석 🔸 두 2차원 행렬의 곱을 구현하는 문제이다. 🔸 문제 풀이 🔸 행렬곱 원리는 다음과 같다. 앞 행렬의 가로 길이(열의 길이)와 뒷 행렬의 세로 길이(행의 길이)가 같아야 곱이 가능하다. 계산 결과 행렬은 앞 행렬의 세로 길이 x 뒷 행렬의 가로 길이 이다. 계산 방법은 다음과 같다. 🔸 코드 🔸 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int row = arr1.length; int col = a..