본문 바로가기

Development/CodingTest

(29)
[DP] Softeer(소프티어) level 3 징검다리 Java 풀이 (+ 테스트 케이스) https://softeer.ai/practice/6293 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 문제 풀이법 돌 높이를 저장하는 배열과, 각각의 돌에 도달하기 위한 걸음 수를 저장하는 DP 테이블 생성(이때 DP 테이블 값은 모두 1로 초기화) for 루프를 돌며 이전 인덱스의 돌 높이보다 현재 돌 높이가 더 높을때 DP[현재 인덱스] = max(현재 인덱스 DP 테이블, 이전 인덱스 DP 테이블에 + 1) 적용 DP 테이블에서 가장 큰 값 리턴 예를 들어 6 1 7 8 2 3 4 의 경우, 잘못된 구현을 하면 1 7 8만 따져서 3이 되겠지만 정답은 1 2 3 4인 4가 정답이다. 즉 각 돌에 도달하기 위한 모든 걸음 수를 검사해야함 결과적으로 돌 높이를 저장하는 배열은..
[Array] Softeer level 3 성적 평균 Java 풀이 (%.2f는 자동 반올림!!) https://softeer.ai/practice/6294 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 풀이법 점수의 누적합을 저장하는 배열을 선언 구간의 끝에 해당하는 배열의 인덱스 값에서, 구간의 시작 - 1에 해당하는 배열의 인덱스를 빼고 평균을 냄 처음엔 Math.round로 반올림을 해야하나 싶었는데 printf("%.2f", 값) 을 하면 알아서 소수 둘째자리 까지 출력하고, 셋째자리에서 반올림을 해준다.. 예를 들어 5 3 10 50 20 70 100 1 3 의 경우 배열에 구간 0 1 2 3 누적합 0 10 60 80 이렇게 저장이 되고, 1부터 3까지 구간은 구간의 끝인 3에 값 80에서 구간의 첫 시작 - 1, 즉 0의 인덱스 값 0을 뺀 다음 구간 수 만큼 나..
[Array] Softeer level 2 금고털이 java O(n) 풀이법 https://softeer.ai/practice/6288 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai 정렬을 사용한 풀이법 (O(nLogN)) ArrayList를 하나 만든 다음 ( 금속 개수, 무게당 가격 ) 형식으로 add 금속 하나당 무게를 기준으로 ArrayList를 내림차순 Sort 후, for 문 돌려서 가방 총 무게를 넘게 되면 break 이 때 Sort를 하게 되면 O(nLogN) 시간이 걸리게 됨 O(n) 풀이법 배열의 인덱스는 무게당 가격(p), 배열 값은 금속 개수를 의미하는 배열 하나를 만듬 입력을 받으면서 무게당 가격에 금속 개수를 누적해감 배열의 끝부터 시작하여 루프를 돌며 금속 개수 * 무게당 가격으로 총 가치를 더해감 이때 가방에 담을 수 있는 무게..
[Basic] Softeer Lv. 1 A+B java 풀이 (+ BufferedReader의 관해) https://softeer.ai/practice/6295 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai Buffer 버퍼(buffer)는 데이터를 임시로 저장하는 메모리 영역을 말합니다. 주로 입출력 작업에서 사용되며, 데이터를 한 곳에서 다른 곳으로 전송하는 도중에 일시적으로 그 데이터를 보관하는 역할을 합니다. 예를 들어, 파일을 읽을 때 한 번에 한 바이트씩 읽는 것은 매우 비효율적입니다. 따라서 대부분의 입출력 라이브러리는 내부적으로 버퍼를 사용하여 한 번에 여러 바이트를 읽어옵니다. 그런 다음 필요할 때마다 이 버퍼에서 데이터를 가져와 사용합니다. BufferedReader는 이런 방식으로 동작합니다. 내부적으로 문자 데이터를 저장하는 버퍼를 가지고 있으며, read()..
[Stack] 프로그래머스 level 2 올바른 괄호 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 초기 문제 접근 int 변수로 flag를 하나 만들고, '('는 ++, ')'는 --로 최종 flag가 0이 아니면 false, 0이면 true로 생각했으나, ")()(" 같은 문자열을 거르지 못했음 나중에야 알았던게 flag가 < 0 이 되면 바로 false를 하면 됐구나.. 문제 접근 '('를 만나면 스택에 넣고 ')'를 만나면 pop 근데 pop할게 없다면(스택이 비..
[Queue] 프로그래머스 level 2 기능개발 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 초기 문제 접근 progresses 요소들을 queue 안에 넣고 순회하면서 speeds를 더해주고 100이 넘는 애들이 나오면 그때 count++하고 answer에 넣기 이런식으로 하려 했으나.. 그럼 speeds를 저장하는 queue도 따로 만들어줘야 하고, 여럿 문제가 생겨버렸다.. 이후 문제 접근 progresses를 순회하며, 기능 개발에 남은 일수를 Math...
[DFS] 프로그래머스 level 3 네트워크 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/43162?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방문한 컴퓨터를 boolean 배열에 저장해야 함 computers의 각 요소를 순회하면서 자기 자신의 인덱스가 아닌 요소가 1인지 검사 1이면 그 컴퓨터로 이동 (dfs로 인덱스 전달), boolean 배열에 true로 변경 순회를 다 했을때 isVisited가 true인 경우 answer++ 코드 class Solution { public int solut..
[Hash] 프로그래머스 level 3 베스트앨범 java 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 를 저장하는 totalGenresPlay 를 저장하는 musicTable 위 두 HashMap을 for loop로 생성 속한 노래가 많이 재생된 장르를 먼저 수록하기 위해, totalGenresPlay의 value값 기준으로 내림차순 sort하여 장르(String)을 저장하는 새 sortedKeyList 생성 sortedKeyList를 순회하면서 musicTable의 저장된 장르의 Ha..