C# 해법
매칭됨/원본using System;
using System.Collections.Generic;
public class Solution {
public string PredictPartyVictory(string senate) {
Queue<int> radiant = new Queue<int>();
Queue<int> dire = new Queue<int>();
for (int i = 0; i < senate.Length; i++) {
if (senate[i] == 'R') {
radiant.Enqueue(i);
} else {
dire.Enqueue(i);
}
}
while (radiant.Count > 0 && dire.Count > 0) {
int r = radiant.Dequeue();
int d = dire.Dequeue();
if (r < d) {
radiant.Enqueue(r + senate.Length);
} else {
dire.Enqueue(d + senate.Length);
}
}
return radiant.Count > 0 ? "Radiant" : "Dire";
}
}
C++ 해법
자동 초안, 제출 전 검토#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public string PredictPartyVictory(string senate) {
queue<int> radiant = new queue<int>();
queue<int> dire = new queue<int>();
for (int i = 0; i < senate.size(); i++) {
if (senate[i] == 'R') {
radiant.Enqueue(i);
} else {
dire.Enqueue(i);
}
}
while (radiant.size() > 0 && dire.size() > 0) {
int r = radiant.Dequeue();
int d = dire.Dequeue();
if (r < d) {
radiant.Enqueue(r + senate.size());
} else {
dire.Enqueue(d + senate.size());
}
}
return radiant.size() > 0 ? "Radiant" : "Dire";
}
}
Java 해법
매칭됨/원본import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public String predictPartyVictory(String senate) {
Queue<Integer> radiant = new LinkedList<>();
Queue<Integer> dire = new LinkedList<>();
for (int i = 0; i < senate.length(); i++) {
if (senate.charAt(i) == 'R') {
radiant.add(i);
} else {
dire.add(i);
}
}
while (!radiant.isEmpty() && !dire.isEmpty()) {
int r = radiant.poll();
int d = dire.poll();
if (r < d) {
radiant.add(r + senate.length());
} else {
dire.add(d + senate.length());
}
}
return radiant.isEmpty() ? "Dire" : "Radiant";
}
}
JavaScript 해법
매칭됨/원본var predictPartyVictory = function(senate) {
let radiant = [];
let dire = [];
for (let i = 0; i < senate.length; i++) {
if (senate[i] === 'R') {
radiant.push(i);
} else {
dire.push(i);
}
}
while (radiant.length && dire.length) {
let r = radiant.shift();
let d = dire.shift();
if (r < d) {
radiant.push(r + senate.length);
} else {
dire.push(d + senate.length);
}
}
return radiant.length ? "Radiant" : "Dire";
};
Python 해법
매칭됨/원본from collections import deque
def predictPartyVictory(senate):
radiant = deque()
dire = deque()
for i, s in enumerate(senate):
if s == 'R':
radiant.append(i)
else:
dire.append(i)
while radiant and dire:
r = radiant.popleft()
d = dire.popleft()
if r < d:
radiant.append(r + len(senate))
else:
dire.append(d + len(senate))
return "Radiant" if radiant else "Dire"
Go 해법
매칭됨/원본package main
import (
"fmt"
)
func predictPartyVictory(senate string) string {
radiant := []int{}
dire := []int{}
for i, s := range senate {
if s == 'R' {
radiant = append(radiant, i)
} else {
dire = append(dire, i)
}
}
for len(radiant) > 0 && len(dire) > 0 {
r := radiant[0]
d := dire[0]
radiant = radiant[1:]
dire = dire[1:]
if r < d {
radiant = append(radiant, r + len(senate))
} else {
dire = append(dire, d + len(senate))
}
}
if len(radiant) > 0 {
return "Radiant"
}
return "Dire"
}
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.
아직 활성 채용이 없습니다.