[백준 13871] Farm robot (C#, C++) - soo:bak
작성일 :
문제 링크
설명
로봇 허수아비가 하루 동안 특정 충전소에 몇 번 도착했는지 계산하는 문제입니다.
로봇은 매일 1
번 충전소에서 시작하여, 주어진 명령어
시퀀스에 따라 시계 방향
이나 반시계 방향
으로 다음 충전소를 향해 이동합니다.
- 로봇의
현재 위치를 나타내는 변수
와목표 충전소에 도달한 횟수
를 세는 변수를 초기합니다.
- 각
명령어
를 순회하면서 로봇의 위치를 갱신하고, 목표 충전소에 도달할 때 마다 횟수를 증가시킵니다.
- 이동 후 로봇의 위치가 충전소 개수를 초과하면
1
로 다시 초기화를 하고,0
이하가 되면 충전소의 총 개수로 설정하여 순환 구조를 유지하게끔 합니다.
- 모든 명령어를 처리한 후 목표 충전소에 도달한 횟수를 출력합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace Solution {
class Program {
static void Main(string[] args) {
var inputs = Console.ReadLine()!.Split(' ').Select(int.Parse).ToArray();
int n = inputs[0], s = inputs[2];
var commands = Console.ReadLine()!.Split(' ').Select(int.Parse);
int currentPosition = 1, count = (s == 1) ? 1 : 0;
foreach (var command in commands) {
currentPosition += command;
if (currentPosition > n) currentPosition = 1;
else if (currentPosition < 1) currentPosition += n;
if (currentPosition == s) count++;
}
Console.WriteLine(count);
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, c, s; cin >> n >> c >> s;
int currentPosition = 1, count = (s == 1) ? 1 : 0;
for (int i = 0; i < c; i++) {
int command; cin >> command;
currentPosition += command;
if (currentPosition > n) currentPosition = 1;
else if (currentPosition < 1) currentPosition = n;
if (currentPosition == s) count++;
}
cout << count << "\n";
return 0;
}