스위치 켜고 끄기
1244번: 스위치 켜고 끄기
첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩
www.acmicpc.net
- 내 풀이
- 뭐때문에 통과안되는지 모르겠음....
slen=int(input()) #스위치길이
ls=list(map(int,input().split()))
student=[]
s_num=int(input())
for _ in range(s_num):
s,m=map(int,input().split())
k=0
if s==1:
for i in range(m, slen , m):
ls[i-1]=1 if ls[i-1]==0 else 0
print(ls)
elif s==2:
l=m-2 #m-1 -1
r=m #m-1 +1
while True: #대칭 아닐때까지 - , +
if l<0 or r>=slen: break
if ls[l]!=ls[r]: break
l-=1
r+=1
#대칭 아니어서 while문 나오면 대칭아니었던 인덱스는 되돌려놓기
l+=1
r-=1
while(l<=r): #사이범위 값 변경
ls[l]=1 if ls[l]==0 else 0
l+=1
for idx, l in enumerate(ls):
print(l,end=" ")
if (idx+1)%20==0:
print()
- 다른 사람 자바 풀이
import java.io.IOException;
import java.util.Scanner;
public class JUN1244_ParkSomin {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt()+1;
int[] slen = new int[n];
for (int i = 1; i < n; i++) {
slen[i] = sc.nextInt();
}
int student = sc.nextInt();
for(int j = 1; j<= student; j++) {
int sx = sc.nextInt();
int m = sc.nextInt();
if(sx == 1) {
for(int i = m; i<n; i+=m) {
slen[i] = slen[i]==0 ? 1:0;
}
}
else if(sx == 2){
int l = m-1;
int r = m+1;
while(true) {//대칭 찾아서
if(l<1 || r>= n) break;
if(slen[l] != slen[r]) break;
l--; r++; //대칭아닐 때까지 - , +
}
l++; r--;
while(l<=r) {
slen[l] = slen[l]==0 ? 1:0;
l++;
}
}
}
for (int i = 1; i < n; i++) {
System.out.print(slen[i]+" ");
if(i%20==0) System.out.println();
}
}
}'코딩테스트 > JAVA 코테' 카테고리의 다른 글
| [백준] 1759. 암호만들기 (0) | 2023.02.25 |
|---|---|
| [백준] [BFS] [Union-Find] 2606.바이러스 (0) | 2023.02.24 |
| 머쓱이보다 키큰 사람 (0) | 2023.02.07 |
| 특정 문자 제거하기 (0) | 2023.02.07 |
| 아이스 아메리카노 (0) | 2023.02.06 |