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 =..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 입력받은 데이터를 가로(행)을 기준으로 회문 검사를 하고, 그 다음에 세로(열)을 기준으로 회문 검사를 진행하면 된다고 생각했다. 따라서 입력 받은 데이터를 horizontal_data라고 하고, 열을 기준으로 다시 구성한 데이터를 vertical_data라고 한 후 각각 회문 개수를 구하였다. 3. 정답 코드 init( ) : 입력 처리 함수 transform_into_vertical( ) : [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]라면 [ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]로 변환..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 현재 수의 각 숫자(digit)이 3, 6, 9를 포함하고 있는지 확인한다. 이때 각 digit를 뽑아내기 위해 현재 수를 문자열로 변환한 후 for문을 돌린다. 3. 정답 코드 n = int(input()) claps = [ '3', '6', '9' ] for i in range(1, n + 1) : temp = '' for digit in str(i) : if digit in claps : temp += '-' if not temp : print(i, end=' ') else : print(temp, end=' ') print()
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 현재까지 본 숫자는 중복이 제거된 0 ~ 9 사이의 값이다. 따라서 집합(set)를 사용하여 지금까지 숫자를 담아야겠다고 판단했다. 집합은 중복을 허용하지 않으므로 만약 집합의 길이가 10이 된다면 이는 곧 0 ~ 9까지의 모든 숫자가 담겼다는 의미이다. 3. 정답 코드 update( ) : 집합에 여러 값을 추가한다 T = int(input()) for test_case in range(1, T + 1): n = int(input()) numbers = set() nx, count = n, 1 while True : temp = ..