주어진 기술 집합에서 특정 과목에 능숙한 학생들로 구성된 "완벽한 팀(perfect team)"을 몇 개나 만들 수 있는지 계산하는 함수입니다.
문제 설명: 주어진 문자열 skills는 각 학생이 특정 과목에 능숙하다는 것을 나타냅니다. 문자열에서 각 문자는 특정 과목을 의미하며, 해당 과목에 능숙한 학생이 한 명씩 있음을 나타냅니다. 예를 들어, "p"는 프로그래밍(progamming), "c"는 사이버보안(cybersecurity), "m"는 머신러닝(machine learning), "b"는 빅데이터(big data), "z"는 데이터베이스(database)를 의미한다고 가정할 수 있습니다. "완벽한 팀"은 모든 다섯 과목에 능숙한 학생들로 구성된 팀을 말합니다. 따라서 한 팀을 만들려면 적어도 각 과목에 능숙한 학생이 한 명씩 필요합니다. 이 코드의 목적은 주어진 skills 문자열로 몇 개의 "완벽한 팀"을 만들 수 있는지를 계산하는 것입니다.
예시:
입력 값 -
"ppcmmbzbbz"
과목 빈도: p = 2, c = 1, m = 2, b = 3, z = 2
가능한 팀 수: min(2, 1, 2, 3, 2) = 1
따라서, 이 입력의 결과는 1입니다.
주어진 정수 배열에서 특정 계산을 수행하여, 해당 계산 결과 중 가장 큰 값을 갖는 요소의 인덱스를 찾는 함수입니다.
문제 설명: 주어진 정수 배열 arr에서 각 요소를 특정 방식으로 제곱하고, 그 결과를 이용해 특정 조건에 맞는 인덱스를 반환하는 것이 이 코드의 목적입니다.
예시:
입력 값 -
[2, 3, 4]
첫 번째 요소 2를 두 번째 요소 3으로 제곱
두 번째 요소 3을 세 번째 요소 4로 제곱
이 값을 MOD로 나눈 나머지를 arr2에 저장
arr2 리스트에서 가장 큰 값은 81이며, 인덱스는 1입니다. 반환되는 값은 1 + 1 = 2입니다.
주어진 명령어에 따라 로봇이 2D 평면에서 움직일 때, 로봇이 원을 그리며 움직이는지 확인하는 함수입니다. 코드는 주어진 명령어 문자열을 네 번 반복하여, 로봇이 원래 위치로 돌아오거나 특정 방향으로만 계속 움직이는지 판단합니다. 여러 명령어 문자열을 처리하는 doesCircleExist 함수도 포함되어 있습니다.
문제 설명:
G: 로봇이 현재 방향으로 한 칸 전진합니다.
L: 로봇이 왼쪽으로 90도 회전합니다.
R: 로봇이 오른쪽으로 90도 회전합니다.
명령어 문자열을 반복하여 로봇이 원래 위치로 돌아오는지 또는 특정 방향으로 계속 움직이며 원을 그리는지 확인합니다.
로봇이 원래 위치로 돌아오거나, 반복된 명령어 실행 후 원래 위치에 도달할 수 있는지 여부에 따라 "YES" 또는 "NO"를 반환합니다.
예시:
입력 값-
commands = ["G", "LGR", "GGR"]
"G": 로봇은 계속 전진하여 원래 위치로 돌아오지 않으므로 "NO".
"LGR": 로봇은 한 번의 명령어 실행 후 원래 위치로 돌아오므로 "YES".
"GGR": 로봇은 계속 전진하여 원래 위치로 돌아오지 않으므로 "NO".
주어진 작업 시간과 일일 작업 시간 제한, 그리고 특정한 주간 작업 패턴에 따라 가능한 모든 일정을 찾는 함수입니다. 이 문제는 백트래킹을 사용하여 가능한 모든 패턴을 탐색하고, 주어진 조건을 만족하는 일정을 생성하는 방식으로 해결됩니다.
문제 설명:
workHours: 주어진 주중에 일해야 하는 총 작업 시간입니다. (1 이상 56 이하)
dayHours: 하루에 일할 수 있는 최대 시간입니다. (1 이상 8 이하)
pattern: 7자리의 문자열로, 각 자리에는 하루 동안 일할 시간을 나타내는 숫자(1~8) 또는 '?'가 들어갑니다. '?'는 그날의 작업 시간이 아직 결정되지 않았음을 의미합니다.
주어진 주간 패턴을 기반으로, 총 workHours 시간을 맞추기 위해 가능한 모든 일정을 생성하는 것입니다. 생성된 일정들은 각 날의 작업 시간이 dayHours를 초과하지 않아야 합니다.
예시:
입력 값 -
workHours = 24
dayHours = 6
pattern = "08?4???"
총 주중 작업 시간은 24시간이고, 하루에 최대 6시간 일할 수 있습니다.
주간 패턴 "08?4???"에서는 첫날 0시간, 둘째 날 8시간, 셋째 날은 미정(최대 6시간까지 가능), 넷째 날은 4시간, 나머지 날은 미정입니다.
이 패턴에 맞춰 가능한 모든 일정을 계산하여 반환합니다.
주어진 2D 정사각형 그리드에서, 합이 maxSum 이하인 가장 큰 정사각형 하위 그리드(subgrid)의 크기를 찾는 함수입니다. 이 문제는 브루트포스(무차별 대입) 방식으로 그리드의 모든 가능한 크기의 하위 그리드에 대해 최대 합을 계산하고, 그 중 조건을 만족하는 가장 큰 크기를 반환하는 방식으로 해결됩니다.
문제 설명:
grid: n x n 크기의 2D 정사각형 배열(그리드)입니다.
maxSum: 주어진 하위 그리드의 합이 초과해서는 안 되는 최대값입니다.
그리드에서 합이 maxSum 이하인 가장 큰 정사각형 하위 그리드를 찾고, 그 하위 그리드의 크기를 반환합니다.
예시:
입력 값 -
grid = [
[2, 2, 3],
[3, 2, 3],
[4, 3, 1]
]
maxSum = 10
주어진 그리드에서 합이 10 이하인 가장 큰 정사각형 하위 그리드는 2x2 크기입니다.