두 정수의 합 (Sum of Two Integers)
두 정수 a, b가 주어질 때, + 와 - 연산자를 사용하지 않고 두 정수의 합을 반환하세요.
예시 1:
입력: a = 1, b = 2
출력: 3
Plain Text
복사
예시 2:
입력: a = 2, b = 3
출력: 5
Plain Text
복사
제약 조건:
•
-1000 <= a, b <= 1000
역폴란드 표기법 계산 (Evaluate Reverse Polish Notation)
이 식을 계산하여, 그 값을 나타내는 정수를 반환하세요.
주의 사항:
•
유효한 연산자는 '+', '-', '*', '/' 입니다.
•
피연산자는 정수이거나 또 다른(부분) 표현식일 수 있습니다.
•
두 정수의 나눗셈은 항상 0을 향해 버림(truncate toward zero) 합니다.
•
0으로 나누는 경우는 없습니다.
•
입력은 유효한 RPN 산술식입니다.
•
정답 및 중간 계산 결과는 모두 32비트 정수로 표현 가능합니다.
예시 1:
입력: tokens = ["2","1","+","3","*"]
출력: 9
설명: ((2 + 1) * 3) = 9
Plain Text
복사
예시 2:
입력: tokens = ["4","13","5","/","+"]
출력: 6
설명: (4 + (13 / 5)) = 6
Plain Text
복사
예시 3:
입력: tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
출력: 22
설명:
((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
Plain Text
복사
제약 조건:
•
1 <= tokens.length <= 10^4
•
tokens[i]는 연산자 "+", "-", "*", "/" 중 하나이거나, [-200, 200] 범위의 정수입니다.
과반수 원소 (Majority Element)
크기 n인 배열 nums가 주어질 때, 과반수 원소(majority element) 를 반환하세요.
과반수 원소란 배열에서 ⌊n / 2⌋번을 초과하여 등장하는 원소를 말합니다. 과반수 원소는 항상 존재한다고 가정해도 됩니다.
예시 1:
입력: nums = [3,2,3]
출력: 3
Plain Text
복사
예시 2:
입력: nums = [2,2,1,1,1,2,2]
출력: 2
Plain Text
복사
제약 조건:
•
n == nums.length
•
1 <= n <= 5 * 10^4
•
-10^9 <= nums[i] <= 10^9
•
입력은 과반수 원소가 존재하도록 생성됩니다.
추가 질문(Follow-up):
선형 시간(O(n))과 O(1) 추가 공간으로 풀 수 있나요?
연예인 찾기 (Find the Celebrity)
문제 설명
n명(0부터 n-1까지 라벨링)이 있는 파티가 있다고 합시다. 그들 중 연예인(celebrity) 이 1명 존재할 수도 있습니다. 연예인의 정의는 다음과 같습니다:
•
다른 n - 1명은 모두 그 연예인을 알고 있지만,
•
연예인은 다른 누구도 알지 않습니다.
당신의 목표는 연예인이 누구인지 찾아내거나(또는) 연예인이 없음을 검증하는 것입니다.
단, 당신이 할 수 있는 것은 다음과 같은 질문을 통해서만 정보를 얻는 것입니다: “A야, B를 아니?”
즉, A가 B를 아는지 여부를 알려주는 보조 함수 bool knows(a, b)만 사용할 수 있습니다.
함수 int findCelebrity(n)를 구현하세요.
•
파티에 연예인이 존재한다면 그 라벨을 반환합니다.
•
연예인이 없다면 -1을 반환합니다.
•
연예인이 존재한다면 정확히 1명만 존재합니다.
입출력 예시
예시 1:
•
입력: graph = [[1,1,0],[0,1,0],[1,1,1]]
•
출력: 1
•
설명: 0, 1, 2 세 사람이 있으며, graph[i][j] = 1이면 i가 j를 안다는 뜻이고, 0이면 모른다는 뜻입니다. 0과 2는 1을 알고 있지만, 1은 누구도 알지 않으므로 연예인은 1입니다.
예시 2:
•
입력: graph = [[1,0,1],[1,1,0],[0,1,1]]
•
출력: -1
•
설명: 연예인이 없습니다.
제약사항
n == graph.length
n == graph[i].length
2 <= n <= 100
graph[i][j] is 0 or 1
graph[i][i] == 1
Plain Text
복사
작업 스케줄러 (Task Scheduler)
대문자 A~Z로 라벨링된 CPU 작업 배열 tasks와 정수 n이 주어집니다. 각 CPU 인터벌(interval)마다, CPU는 쉬고(idle) 있을 수도 있고 작업 1개를 완료할 수도 있습니다.
작업은 어떤 순서로 처리해도 되지만 제약이 있습니다:
•
같은 라벨의 작업 두 개 사이에는 최소 n개의 인터벌 간격이 있어야 합니다.
모든 작업을 완료하는 데 필요한 CPU 인터벌의 최소 개수를 반환하세요.
예시 1:
•
입력: tasks = ["A","A","A","B","B","B"], n = 2
•
출력: 8
•
설명: 가능한 처리 순서: A -> B -> idle -> A -> B -> idle -> A -> B
작업 A를 한 뒤에는 A를 다시 하기까지 2 인터벌을 기다려야 하고, B도 마찬가지입니다. 3번째 인터벌에서는 A/B 모두 할 수 없어 idle이 됩니다.
예시 2:
•
입력: tasks = ["A","C","A","B","D","B"], n = 1
•
출력: 6
•
설명: 가능한 처리 순서: A -> B -> C -> D -> A -> B
쿨다운이 1이면, 다른 작업 1개만 사이에 두고 같은 작업을 다시 실행할 수 있습니다.
예시 3:
•
입력: tasks = ["A","A","A","B","B","B"], n = 3
•
출력: 10
•
설명: 가능한 처리 순서: A -> B -> idle -> idle -> A -> B -> idle -> idle -> A -> B
A와 B 두 종류의 작업만 있고 3 인터벌을 띄워야 하므로, 사이에 idle이 2번씩 들어가게 됩니다.
제약 조건:
•
1 <= tasks.length <= 10^4
•
tasks[i]는 대문자 영문자입니다.
•
0 <= n <= 100
