SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 자료구조: List VS deque 입력받은 명령어는 왼쪽에서부터 값을 꺼내 활용할 테니, 시간 복잡도가 O(1)인 popleft()를 사용하기 위해 deque 구조를 사용할까 고민하였다. 그러나 D (삭제)를 슬라이싱으로 처리할 계획이었기 때문에 리스트를 선택하였다. (deque는 슬라이싱이 불가능하다) 문제가 조금 불친절했다. x의 위치라는 것이 1) x라는 값의 인덱스인지 2) index가 x인지 불명확하다고 생각했다. 그래도 이것은 주어진 테스트 케이스를 탐색하며 2)의 의미라는 것을 알 수 있었다. 그러나 테스트 케이스가 ..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 우선적으로 테이블을 가장 간단하게 구성한 다음에 교착 상태 개수를 구해야겠다고 생각했다. 교착 상태는 테이블의 열에서 발생한다. 따라서 연산을 쉽게 하기 위해 테이블의 행과 열 위치가 바뀐 치환 행렬로 만들어야겠다고 판단했다. 이때 원소 값이 0이면 자성체가 없는 것이므로, 데이터 수를 줄이기 위해 0은 아예 제거하기로 했다. 또한 테이블의 윗부분과 아랫부분에는 각 N극(1)과 S극(2)이 있는데, 만약 테이블 내 가장 끝단에 S극과 N극이 있다면 교착 상태 없이 이끌려 테이블 아래로 떨어진다. 즉, 가장 왼쪽에 S극(2) 성질을 ..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 사이클을 한 번 돌리고, 마지막 원소 값이 0인지 확인하는 것이 큰 틀이다. 사이클은 temp 리스트를 생성하여 for문을 돌리는 방식으로 처리한다. 그 이유는 아래와 같다. li = [1, 2, 3, 4] for e in li : li.append(e) if len(li) == 10 : break print(li) # 결과: [1, 2, 3, 4, 1, 2, 3, 4, 1, 2] 만약 li 라는 리스트에, 다시 1, 2, 3, 4를 집어 넣고 싶다고 가정한다. 위 코드의 문제점은 li 리스트로 반복문을 돌리면서 li 리스트에 원소..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 초기화된 상태는 전부 0이다. 따라서 1이 위치한 곳에서부터 원래 상태로 돌아가기 위해 몇 번을 고쳐야 하는지 계산하면 된다. 만약 전부 원본이 전부 0이라면 한 번도 고칠 필요가 없기 때문에 0을 출력한다. 한 번 bit이 정해지면 메모리 끝까지 덮기 때문에 원본에서 1 → 0 혹은 0 → 1로 바뀌는 횟수를 구하면, 그것이 바로 원래 상태로 돌아가는 데 필요한 수정 횟수이다. 3. 정답 코드 T = int(input()) for test_case in range(1, T + 1): original = input() index =..