일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 삼성 청년 sw아카데미
- 비전공자
- 우테코
- 싸피 13기
- 삼성청년SW아카데미
- SSAFY
- 백준 2003
- 우테코 프리코스
- dfs
- 우테코 7기
- UML
- 코딩
- 싸피
- 삼성 부트캠프
- 삼성 청년 SW 아카데미
- 정처기
- 삼성
- 코테
- 부트캠프
- 디자인패턴
- 13기
- SWEA
- 백준
- 정보처리기사
- 프리코스
- 마이스터고
- 취뽀
- 코딩테스트
- 개발자
- 파이썬
Archives
- Today
- Total
룰루코딩
SWEA D3 1229. [S/W 문제해결 기본] 8일차 - 암호문2 본문
문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
솔루션
for t in range(1,11):
N = int(input())
li = list(map(int, input().split()))
cmd_N = int(input())
cmd = input().split()
i = 0
while i < len(cmd):
if cmd[i] == "I":
start = int(cmd[i + 1])
n = int(cmd[i + 2])
insert = map(int, cmd[i + 3:i + 3 + n])
li = li[:start] + list(insert) + li[start:]
i += 3 + n
elif cmd[i] == "D":
start = int(cmd[i + 1])
n = int(cmd[i + 2])
li = li[:start] + li[start + n:]
i += 3
else:
i += 1
print(f"#{t}",end=" ")
print(*li[:10])
깨달은 점
for t in range(1, 11):
N = int(input()) # 암호문의 길이
li = list(map(int, input().split())) # 원본 암호문
cmd_N = int(input()) # 명령어 개수
cmd = input().split("I") # "I"를 기준으로 명령어 분리
new_cmd = []
for i in cmd[1:]:
new_cmd.append(i.strip().split())
for command in new_cmd:
# 명령어가 삽입("I")인지 삭제("D")인지 확인
if command[0] == "D":
# "D" 명령어 처리: x 위치 다음부터 y개의 숫자를 삭제
start = int(command[1])
count = int(command[2])
li = li[:start] + li[start + count:]
else:
# "I" 명령어 처리: x 위치 다음에 y개의 숫자를 삽입
start = int(command[0])
n = int(command[1])
insert = list(map(int, command[2:2 + n])) # 삽입할 숫자들을 정수 리스트로 변환
li = li[:start] + insert + li[start:]
# 결과 출력
print(f"#{t}", end=" ")
print(*li[:10])
이전문제 코드에서 추가할라면 이렇게 할 수 있지만 명령어 마다 다르게 하려면
방식을 바꾸는게 좋을 것 같아 바꾸었다.
for t in range(1,11):
N = int(input())
li = list(map(int, input().split()))
cmd_N = int(input())
cmd = input().split()
print(cmd)
i = 0
while i < len(cmd):
if cmd[i] == "I":
start = cmd[i + 1]
n = cmd[i + 2]
insert = list(cmd[i + 3:i + 3 + n])
li = li[:start] + insert + li[start:]
i += 3 + n
elif cmd[i] == "D":
start = cmd[i + 1]
n = cmd[i + 2]
li = li[:start] + li[start + n:]
i += 3
else:
i += 1
print(f"#{t}",end=" ")
print(*li[:10])
이렇게 새로 풀었다가 에러가 났다.
cmd[] 부분을 인덱스로 사용하기 위해 int형으로 변환시켜주어야한다.
추가로 주의할 부분은
list(map(int, cmd[i + 3:i + 3 + count]))
map 객체를 리스트에 바로 병합할 수 없다는 오류가 있어
리스트로 한번더 변환한후 삽입해야한다!!
'SWEA' 카테고리의 다른 글
SWEA D3 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (2) | 2024.11.15 |
---|---|
SWEA D3 1230. [S/W 문제해결 기본] 8일차 - 암호문3 (3) | 2024.11.15 |
SWEA D3 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (4) | 2024.11.15 |
SWEA D3 1225. [S/W 문제해결 기본] 7일차 - 암호생성기 (1) | 2024.11.14 |
SWEA D3 1221. [S/W 문제해결 기본] 5일차 - GNS (6) | 2024.11.14 |