Код проблемы: ПРЯМОЙ
Профессор смотрит на Север. Токио в беде, и она смотрит на Юг. Профессор, будучи ее ангелом-хранителем, хочет ей помочь.
Итак, Профессор будет следовать некоторым инструкциям, приведенным в виде строк длиной N, и повернет либо влево, либо вправо в соответствии с этими инструкциями. Он может спасти Токио только в том случае, если, следуя подстроке инструкций, он повернется лицом в том же направлении, что и Токио.
Сможет ли профессор спасти Токио?
Ввод
Первая строка содержит целое число T, обозначающее количество тестовых примеров. Затем следуют T-тестовые примеры. Первая строка каждого тестового примера содержит N. Вторая строка содержит строку, содержащую только ‘L’ и ‘R’, где ‘L’ обозначает левое, а ‘R’ – правое.
Выход
Для каждого тестового примера выведите “ДА”, если профессор сможет сохранить Токио, и “НЕТ” в противном случае.
Выходные данные не чувствительны к регистру, что означает, что “да”, “Да”, “Да”, “нет”, “Нет” – все такие строки будут приемлемыми.
Объяснение
Профессор, с которым он впервые столкнулся на северной стороне, цель – спасти Токио, Токио будет спасен только в том случае, если профессор повернется лицом к югу после выполнения инструкций. Инструкции содержат букву “L” для левого и “R” для правого. Мы определили две функции, а именно две левые и две правые, которые проверяют, появлялась ли буква L или R последовательно в строке 2 или более двух раз. Если это так, то вращение в одном и том же направлении дважды приведет к тому, что вы окажетесь лицом к противоположному направлению, в котором стоит человек, в данном случае профессор стоял в северном направлении.
После получения количества последовательных букв “L” или “R” . Следующее условие проверяет, равно ли значение 2 или больше 2, если оно равно true, то выводится значение “ДА”, в противном случае будет выведено значение “Нет”, и профессор не сможет сохранить данные.
Условие для проверки того, равно ли значение ‘L’ или ‘R’ или больше 2.
int max = twoRight(str);
int max1 = twoLeft(str);
if(max >= 2 || max1 >=2) {
System.out.println("YES");
}else {
System.out.println("NO");
}
Проверьте количество поворотов влево и количество или право
private static int twoRight(String str) {
int max = 0;
for (int i = 0; i < str.length(); i++) {
int count = 0;
for (int j = i; j < str.length(); j++) {
if (str.charAt(i) == str.charAt(j)) {
if(str.charAt(i)=='R'){
count++;
}
} else break;
}
if (count > max) max = count;
}
return max;
}
private static int twoLeft(String str) {
int max1 = 0;
for (int i = 0; i < str.length(); i++) {
int count = 0;
for (int j = i; j < str.length(); j++) {
if (str.charAt(i) == str.charAt(j)) {
if(str.charAt(i)=='L'){
count++;
}
} else break;
}
if (count > max1) max1 = count;
}
return max1;
}
int max = twoRight(str);
int max1 = twoLeft(str);
if(max >= 2 || max1 >=2) {
System.out.println("YES");
}else {
System.out.println("NO");
}
Ввод:
3 12 LRLRRRLRLLLL 2 LR 4 LRRL
Выход:
YES NO YES
Ссылка на исходную проблему https://www.codechef.com/START16C/problems/DIRECTN/
Ссылка Для Запуска Кода:- кликните сюда
НРАВИТСЯ! ДЕЛИСЬ! КОММЕНТАРИЙ!
В эту серию будут регулярно добавляться новые проблемы.
Оригинал: “https://dev.to/atharvasiddhabhatti/codechef-professor-and-directions-5h0m”