티스토리 뷰
https://www.acmicpc.net/problem/1244
문제생각
제한시간도 충분하고 입력받는 수나 리스트의 크기가 그렇게 크지 않아서 간단한 구현 문제라고 생각하였습니다.
(정답비율이 19프로라서 문제 풀기 전에 겁먹었습니다...ㅎ)
남학생의 경우에는 단순히 반복문을 돌려 배수를 찾아 이를 바꿔주기만하면 끝납니다.
여학생의 경우에는 좌우대칭을 확인해야하는데 저는 투 포인터 방식을 사용하여 확인하고 바꿔주었습니다.
여기서 투 포인터 방식이란 두개의 포인터를 두고 각 포인터의 위치를 변경하며 해당인덱스의 값을 확인하는 방법입니다.
검색해보시면 더욱 자세하게 알 수 있습니다..ㅎㅎ
문제코드
switchNum=int(input())
status=list(map(int, input().split())) #0:OFF, 1:ON
studNum=int(input())
student=[list(map(int, input().split())) for _ in range(studNum)] #남:1, 여:2
dic={0:1, 1:0} #바꾸기 위한 dictionary
for s in student:
if s[0]==1:
for i in range(switchNum):
if (i+1)%s[1]==0:
status[i]=dic[status[i]]
elif s[0]==2:
status[s[1]-1]=dic[status[s[1]-1]]
p1, p2=s[1]-2, s[1]
while p1>=0 and p2<switchNum:
if status[p1]==status[p2] and p1!=p2:
status[p1]=dic[status[p1]]
status[p2]=dic[status[p2]]
else:
break
p1-=1
p2+=1
print(status[0], end=' ')
for i in range(1, switchNum):
if i%20==0:
print()
print(status[i], end=' ')
"아직 실력이 부족하여 문제 해결에 있어 코드가 매끄럽지 못한 점 양해부탁드립니다..ㅎ"
'코딩테스트 > 백준' 카테고리의 다른 글
백준-11660(파이썬) (0) | 2022.10.02 |
---|---|
백준-11659(파이썬) (1) | 2022.09.30 |
백준-19637(파이썬) (0) | 2022.09.30 |
백준-2108(파이썬) (0) | 2022.08.29 |
백준-7568(파이썬) (0) | 2022.08.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1978
- 서블릿#Servlet
- 백준#서강근육맨#20300
- list
- querydsl
- 대충 만든 자판
- 백준#잃어버린 괄호#1541
- 11659
- 4673번
- 7568
- HTTP#HTTP특징
- MVC
- springboot
- 덧칠하기
- Spring
- 회고
- 게시판#자바#JPA#Entity
- java
- 백준
- this()
- 오류
- arraylist
- controller
- 백엔드#게시판
- 파이썬
- 1316번
- 사탕 게임#백준#3085
- 프로그래머스
- 자바
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
글 보관함