2022년 11월 4일에 작성됨 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 분석 수를 입력했을 때, 각 자리 수를 내림차순으로 정렬하기 수를 리스트에 넣고, 리스트에 들어있는 값을 반대로 정렬하는 방법을 이용한다. 소스 코드 (⭕) num = int(input()) # num 정수형으로 입력받음 num_list = [] # num 담을 빈 리스트 선언 for i in str(num): # 문자열 형식으로 num을 i에 대입 num_list.append(int(i)) # num의 문자 하나씩 정수로 변환하여 리스트에 추가..
2022년 11월 3일에 작성됨 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 분석 대각선이 짝수번째인지 홀수번째인지에 따라 분수의 규칙이 달라진다. - n번째 줄에는 n개의 분수가 있다. - 대각선 라인이 짝수이면 분자가 오름차순, 분모가 내림차순이다. - 대각선 라인이 홀수이면 분모가 내림차순, 분모가 오름차순이다. 즉, 입력되는 값이 몇 번째 줄의 몇 번째 위치인지 찾고 위에서 찾은 규칙을 적용해준다. 소스 코드 (⭕) n = int(input()) # 분수 번호 n 입력 line = 1 # 분수 라인 1부터 시작 while (n > line): # n이 line..
2022년 11월 2일에 작성됨 https://www.acmicpc.net/problem/2857 2857번: FBI 5개 줄에 요원의 첩보원명이 주어진다. 첩보원명은 알파벳 대문자, 숫자 0~9, 대시 (-)로만 이루어져 있으며, 최대 10글자이다. www.acmicpc.net 문제 분석 문장을 입력 받고, 그 문장 안에 FBI가 있으면 몇 번째인지 출력한다. 소스 코드 (⭕) key = "FBI" lst = [] for i in range(5): word = input() if key in word: lst.append(i+1) if len(lst) == 0: print("HE GOT AWAY!") else: print(*lst) 코드 분석 1. FBI 문자열이 들어있는 key라는 변수를 만들고 빈 ..
목표 윈도우 계산기 디자인을 오마주 하여 Python 계산기 GUI 만들어 보면서 공부하기! 과정 오오..! 창이 생겼다! 코드를 적고 실행시키는 방법은 터미널에 python .\파일명.py 라고 치거나 사진에서 오른쪽 위에 재생 버튼(Run Python File)을 누르면 된다. 실행하기 전에 저장하는 습관 들이자! 창 크기와 제목을 추가했다. 계산기 옆에 깃털 모양 이모지는 못바꾸나? 계산기의 결과창을 만들었다. justify = 'right'는 결과창의 숫자를 오른쪽에 배치한다. bg = 'white'는 결과창의 배경 색을 하얀색으로 한다. fg = 'black'은 결과창 숫자의 글자 색을 검정으로 한다. ipadx = 80은 결과창의 가로 길이를 80으로 한다. ipady = 60은 결과창의 세로..
2022년 9월 27일에 작성됨 https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 문제 분석 replace 함수를 사용해서 XXXX를 AAAA로, XX를 BB로 바꿔준다. 소스 코드 (⭕) board = input() board = board.replace("XXXX", "AAAA") # "XXXX"를 AAAA로 바꿈 board = board.replace("XX", "BB") # "XX"를 BB로 바꿈 if 'X' in board: # board에 'X'가 있으면 -1 출력 print(-1) else: # 'X'가 없으면 board 출력 print..
2022년 9월 27일에 작성됨 https://www.acmicpc.net/problem/1340 1340번: 연도 진행바 평년일 때, 각 달은 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31일이 있다. 윤년에는 2월이 29일이다. 윤년은 그 해가 400으로 나누어 떨어지는 해 이거나, 4로 나누어 떨어지면서, 100으로 나누어 떨어지지 www.acmicpc.net 문제 분석 현재 연도가 평년인지, 윤년인지 판단 한다. 윤년이면 2월의 일 수가 1일 늘어난다. 이 문제에선 시간의 최소 단위가 '분'이기 때문에 모든 날짜와 시간을 분 단위로 바꾸어 준다. 소스 코드 (⭕) string = input().split(' ') # 전체 문자열 공백으로 나눠 입력 받기 mont..
2022년 8월 28일에 작성 https://www.acmicpc.net/problem/1547 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net 문제 분석 1번, 2번, 3번 컵이 일렬로 있을 때, 공의 위치는 1번 컵 위치로 고정이다. 컵의 번호 2개를 골랐을 때, 그 컵들의 위치를 서로 바꾼다. 컵의 위치를 M번 반복해서 바꾸고 난 이후에 공이 들어있는 컵의 번호를 구한다. 소스 코드 (⭕) M = int(input()) # 컵의 위치를 바꿀 횟수 입력 cups = [1, 2, 3] # 1번, 2번, ..
2022년 8월 21일에 작성 https://www.acmicpc.net/problem/15828 15828번: Router 인터넷을 사용하기 위해서는 컴퓨터에 인터넷 회선을 연결하거나 Wi-Fi를 연결해야 한다. 이렇게 연결된 네트워크를 통해 컴퓨터에는 통신이 가능하다. 마음에 드는 노래나 동영상이 있는 곳에 www.acmicpc.net 문제 분석 큐(queue) 자료 구조에서 데크(deque) 자료 구조를 이용한다. 소스 코드 (⭕) from collections import deque import sys input = sys.stdin.readline n = int(input()) buffer = deque() while True: x = int(input()) if x == -1: break if..
2022년 8월 21일에 작성 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 분석 큐(queue) 자료 구조를 이용한 문제이다. 큐(queue)는 선입선출, FIFO(First In First Out) 기반의 매우 유명한 자료 구조이다. 큐를 사용하면 데이터를 추가한 순서대로 제거할 수 있다. pop(), append() 함수를 이용하여 문제를 푼다. 소스 코드 (⭕) N = int(input()) # 정수 N 입력받기 card = li..
2022년 8월 12일에 작성됨 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 분석 정수 k를 입력하고, k개의 정수 num을 입력한다. num이 0인 경우와 0이 아닌 경우로 나눠서 0이라면 리스트의 최근의 수를 지우고, 아니라면 num을 리스트에 추가한다. 최종적으로 리스트에 있는 수들의 합을 출력한다. 소스 코드 (⭕) stack = [] # 스택 리스트 생성 k = int(input()) for ..