[HackerRank] Designer PDF Viewer

아르당·2023년 11월 5일
0

HackerRank

목록 보기
10/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

문제

PDF 뷰어에 연속된 텍스트 블록이 선택된다면 파란색 직사각형으로 강조된다.
26개 문자가 순서대로 정렬되어 있는 리스트가 있다. 예를 'a'는 0번째, 'z'는 25번째이다. 주어진 모든 너비가 1인 문자를 사용해서 강조된 직사각형의 넓이를 구해라.

Example

h = [1, 3, 1, 3, 1, 4, 1, 3, 2, 5, 5, 5, 5, 1, 1, 5, 5, 1, 5, 2, 5, 5, 5, 5, 5, 5]
word = 'torn'

t는 2, o는 1, r은 1, n은 1이다. 가장 큰 높이의 문자는 2이고 문자는 총 4개이다. 강조된 영역은 2 * 4 = 8 mm^2 이므로 답은 8이다.

Function Description

designerPdfViewer 함수를 완성해라.
designerPdfViewer 함수는 아래와 같은 매개변수를 가지고 있다.

  • int h[26]: 각 문자의 높이
  • String word: 주어지는 문자

Constraints

  • 1 <= h[?] <= 7, ?는 영문의 소문자
  • word는 10보다 크지 않은 문자열이다.

풀이

문자의 최대 높이를 넣어둘 변수를 선언한다.

int letter = 0;

주어진 문자열을 반복문을 통해 최대 높이의 문자를 찾는다. 이때 charAt()을 사용하면 쉽게 찾을 수 있다. 주어진 문자열은 소문자만 있어서 97을 빼면 해당 문자의 인덱스를 구할 수 있다.

for(int i = 0; i < word.length(); i++){
	letter = Math.max(letter, h.get(word.charAt(i) - 97));
}

마지막으로 letter와 문자의 길이를 곱하여 반환한다.

return letter * word.length();

전체 코드

public static int designerPdfViewer(List<Integer> h, String word) {
	int letter = 0;

	for(int i = 0; i < word.length(); i++){
		letter = Math.max(letter, h.get(word.charAt(i) - 97));
	}

	return letter * word.length();
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글