-
백준 15729번: 방탈출 (Python/Java)Algorithm/Algorithm Problem 2022. 1. 22. 16:14
https://www.acmicpc.net/problem/15729
15729번: 방탈출
첫째 줄에 N(1 ≤ N ≤ 1,000,000)가 주어지고 둘째 줄에는 쪽지에 적혀 있는 N자리의 수가 빈 칸을 사이에 두고 주어진다.
www.acmicpc.net
접근
주어진 버튼을 전부 0으로 만들어야 하는 것이 목표다. 또, 누른 버튼의 오른쪽 2개까지 함께 버튼이 눌린다. 이 얘기는 바로 앞 버튼부터 상태가 1인 버튼을 눌러나가야 한다는 뜻이다. 마지막, 혹은 중간부터 누르는 것은 의미가 없다. 그렇게 누르게 된다면 그보다 앞의 버튼을 눌렀을 때 상태가 변하게 될 수 있기 때문이다.
풀이
Python
buttonNum = int(input()) board = list(map(int, (input()).split())) result = 0 for i in range(buttonNum): if board[i] == 1: result += 1 for j in range(3): if (i+j) < buttonNum: if board[i+j] == 0: board[i+j] = 1 else: board[i+j] = 0 print(result)
Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int buttonNum = Integer.parseInt(scan.nextLine()); int[] board = new int[buttonNum]; String[] firstLine = (scan.nextLine()).split(" "); for(int i = 0 ; i < buttonNum ; i++){ board[i] = Integer.parseInt(firstLine[i]); } int result = 0; for(int i = 0 ; i < buttonNum ; i++){ if(board[i] == 1){ result += 1; for(int j = 0 ; j < 3 ; j++){ if((i+j) < buttonNum){ if(board[i+j] == 0){ board[i+j] = 1; }else{ board[i+j] = 0; } } } } } System.out.println(result); } }
'Algorithm > Algorithm Problem' 카테고리의 다른 글
백준 1541번: 잃어버린 괄호 (Python/Java) (0) 2022.01.24 백준 2343번: 기타 레슨 (Python/Java) (0) 2022.01.23 백준 3079번: 입국심사 (Python/Java) (0) 2022.01.21 백준 16678번: 모독 (Python/Java) (0) 2022.01.20 백준 16564번: 히오스 프로게이머 (Python/Java) (0) 2022.01.19