본문 바로가기
반응형

PS 문제 풀이/HackerRank15

[HackerRank] Java Stack 출처: www.hackerrank.com/challenges/java-stack/problem?h_r=next-challenge&h_v=zen&h_r=next-challenge&h_v=zen stack의 LIFO(Last In First Out) 특성을 이용해서 괄호쌍이 일치 여부를 판단하여 [true]/[false] 출력 : 열린 괄호 '[', '{', '(' 와 닫힌 괄호 ']', '}', ')' 가 적절한 위치에 있는지 확인 import java.util.*; class Solution{ public static void main(String []argh) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String str = sc.ne.. 2021. 2. 18.
[HackerRank] Apple and Orange 출처: https://www.hackerrank.com/challenges/apple-and-orange/problem 음수는 왼쪽 / 양수는 오른쪽으로 이동 첫번째 사과 5 - 2 = 3 두번째 사과 5 + 2 = 7 세번째 사과 5 + 1 = 6 첫번째 오렌지 15 +5 = 20 두번째 오렌지 15 - 6 = 9 7~11 사이에 있는 사과 1개 / 오렌지 1개 import java.util.Scanner; public class Solution{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int s, t; int a, b; int apple, orange; s = sc.nextInt(); t = sc.ne.. 2021. 2. 18.
[HackerRank] Matrix Layer Rotation 출처: https://www.hackerrank.com/challenges/matrix-rotation-algo/problem Input 4 4 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output 3 4 8 12 2 11 10 16 1 7 6 15 5 9 13 14 Cycle의 개수는 m, n 중 작은 수의 2로 나누었을 때의 몫이다. ex) min (2 * 6) → 2 / 2 = 1 min (8 * 9) → 8 / 2 = 4 위와 같이 m, n 중 큰 수가 어떤 수든 상관없이 『min( m, n ) / 2』로 계산해서 cycle 개수를 도출할 수 있다. 실제 이차원 배열상에서 rotation을 시킬 수도 있지만 『ㅁ』 을 한 개의 『ㅡ』로 생각하여 rotation 처리.. 2021. 2. 18.
[HackerRank] Queen's Attack II 출처: https://www.hackerrank.com/challenges/queens-attack-2/problem Input 5 3 4 3 5 5 4 2 2 3 Output 10 체스의 여왕(Queen)이 움질 수 있는 칸 수를 출력하는 문제이다. 위에서 처럼 임의의 위치에 장애물이 설치되어 있으면 해당 방향에 방해물 다음 지점으로는 움직일 수 없다. 문제 Test Case 중 두가지 조건이 있기에 주먹구구 방식으로는 통과할 수 없다. 0 < n ≤ 1000 0 ≤ k ≤ 10^5 - n*n 크기 만큼의 배열 가질 수 없다. → 메모리 초과 - 여왕이 움직일 수 있는 칸을 일일이 확인할 수 없다. → timeout 발생 → 주먹구구식으로 하나하나 비교하지 않고, (key, value) 형식으로 구현 .. 2021. 2. 18.
[HackerRank] The Bomberman Game 출처: https://www.hackerrank.com/challenges/bomber-man/problem (r, c) = 격자 크기 / 경과 시간 n (6, 7) / n = 3 (n 초 후의 격자 상태를 출력하는 것) (폭탄 'O' / 아닌 지역은 '.') 위와 같이 초기에 임의의 위치에 폭탄이 설치되어 있다. 현재 시점에 설치되어 있는 폭탄은 3초뒤에 터진다. [1초 후] Bomberman은 아무런 행위를 하지 않는다. 이때는 '1초'의 시간이 흐른것 외에는 차이가 없다. [2초 후] Bomberman이 폭탄이 없었던 모든 영역에 새로운 폭탄을 설치한다. 이 시점에 설치된 폭탄은 지금으로부터 3초 뒤에 터진다. [3초 후] 3초가 지나면서 초기에 설치되어 있던 폭탄들이 터진다. 이때, 폭발범위는 상.. 2021. 2. 18.
[HackerRank] Strange Counter 출처: https://www.hackerrank.com/challenges/strange-code/problem 시간의 경과와 달리 특정 규칙에 따라 숫자를 세고 있다. [Counter Count]를 그대로 구현하는 주먹구구 방식은 시간을 만족하지 못한다. 각 Cycle의 시작시간과 끝시간은 다음과 같다. (1) 1~3 → 차이 3 (2) 4~9 → 차이 6 (3) 10~21 → 차이 12 → 차이는 진행되는 cycle이 2배씩 된다. → (해당 Cycle의) 시작 시간은 초기값 1부터 '차이'가 더해진 값이며 → (해당 Cycle의) 종료 시간은 시작시간에서 '차이'가 더해진 값이다. 이를 수식적으로 계산하면 보다 빠르게 계산할 수 있다. ※ Test Case 중에 t가 int 범위를 벗어나는 것이 있.. 2021. 2. 18.
[HackerRank] Cavity Map 출처: https://www.hackerrank.com/challenges/cavity-map/problem 가장자리를 제외한 cell 영역에서 cavity인지를 판단하는 문제이다. 'Cavity 여부'는 해당 지점의 값이 상하좌우 값 보다 높을 때이다. 해당 지점을 [X]로 해서 표시해서 출력한다. 문제 Test Case 중 input data 입력 방식이 Sample Case와 달리 공백으로 주어져서 제출코드에서는 공백을 없애는 과정을 추가함. import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Solution { public static void main(String[] args) { Sca.. 2021. 2. 18.
[HackerRank] 3D Surface Area 출처: https://www.hackerrank.com/challenges/3d-surface-area/problem Input 3 3 1 3 4 2 2 3 1 2 4 Output 60 윗면, 아랫면 각 Cube의 높낮이와 상관없이 h * w * 2이다. 그렇기에 옆면의 높이를 비교해서 총 면적을 구한다. import java.util.Arrays; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int h = sc.nextInt(); int w = sc.nextInt(); int[][] cube = new int[h][w];.. 2021. 2. 18.
[HackerRank] Repeated String (Java) 출처: https://www.hackerrank.com/challenges/repeated-string/problem 임의의 문자열과 문자열의 길이가 주어진다. aba / aba / aba / a → 문자열 길이 10 [a]의 개수: 7 문자열의 길이 n이 작은 숫자가 아니기에 문자열의 길이를 무한정 늘릴 수는 없다. 그렇기에 처음 주어진 문자열의 규칙을 분석하여 구현 Input aba 10 Output 7 ex) 'aba' 라는 문자가 있다고 생각하자. (길이는 3) 해당 문자열이 1000 길이만큼 반복된다고 생각하자 aba + aba + aba + aba + ... + a 즉, 길이가 3인 [aba]는 333번 반복되서 999 길이를 채울 것이고 부분 문자열인 [a]가 1을 차지하여 1000자를 채울.. 2021. 2. 14.
[HackerRank] Almost Sorted (Java) 출처: https://www.hackerrank.com/challenges/almost-sorted/problem 원소 개수 n이 주어지고 다음 줄에는 원소값들이 주어진다. 연산 1개를 적용해서 오름차순으로 정렬시킬 수 있는지 확인. - 처음부터 정렬되어 있다면 [yes]만 출력 - 연산(swap, reverse) 중 한가지를 한번만 사용할 수 있다. - swap, reverse 중에 swap으로 해결된다면 reverse 대신 swap 수행 - 어떠한 연산도 소용없다면 [no] 출력 Input 2 4 2 Output yes swap 1 2 연산을 한번만 적용할 수 있기에 연산 적용 후 오름차순이 되었는지 판단하여 처리. swap은 위치를 맞교환 하는 것이고 / reverse는 특정 구간을 뒤집는 특성 이.. 2021. 2. 14.
반응형