-
해당 문제는 런타임 에러가 발생하여 나름 애먹은 문제다.
https://www.acmicpc.net/problem/1244
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201244
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201244RE
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 특정 조건에 따라 스위치를 on off 하여 최종적으로 스위치가 on off 결과를 출력해 주는 문제다.
조건
1 은 스위치 on 0 은 스위치 off 1 은 남자 2 는 여자
스위치는 1번부터 시작
남자는 받은 숫자의 배수의 스위치의 상태를 바꾸어 준다,
여자는 받은 숫자를 기준으로 좌우가 대칭되면 대칭되는 대칭되는 구간만큼의 스위치의 상태를 바꾸어 준다.
한 줄에 스위치는 20개씩 출력하며 각 스위치마다 띄어쓰기를 해 출력한다.
먼저 데이터를 입력받고 남학생의 경우 받은 숫자의 배수인 스위치의 상태를 바꾸어 준다.
이때 스위치는 change 함수를 따로 선언하여 바꾸어 주었다.
이후 여학생의 경우 3가지 경우의 수가 발생하는데,
받은 숫자가 배열 중간 위치보다 뒤인 경우 스위치 숫자 - 받은 숫자만큼 반복하면서 받은 숫자 기준 앞뒤가 대칭되면 카운트해주고 그렇지 않으면 반복문을 빠져나온다.
받은 숫자와 배열 중간 위치가 같거나 앞인 경우 받은 숫자 -1 만큼 반복하면서 받은 숫자 기준 앞뒤가 대칭되면 카운트해주고 그렇지 않으면 반복문을 빠져나온다.
이후 카운트 값만큼 반복을 통해 스위치 상태를 change 함수를 통해 바꾸어 주고, 카운트 값을 초기화하여준다.
최종적으로 변경된 스위치 결과를 출력해 준다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 13305 주유소 JAVA (0) 2021.11.04 Baekjoon 1065 한수 JAVA (0) 2021.11.04 Baekjoon 1246 온라인 판매 JAVA (0) 2021.11.04 Baekjoon 1010 다리 놓기 JAVA (0) 2021.11.04 Baekjoon 1094 막대기 JAVA (0) 2021.11.04 댓글