목록파이썬 (12)
줴림이 공부하줴림
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do이번 문제는 N자리 16진수가 주어지면 각 자리 수를 4자리 2진수로 표시하는 프로그램을 만드는 것이다.2진수의 앞자리 0도 반드시 출력해야 함ex) 47FE => 01000111111110T = int(input())hex_list = {'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15}for test_case in range(1, T+1): N, num = input().split() answer = '' for i in num[::-1]: if i in hex_list: i = ..
[Tree]- 비선형 구조 + 원소들 간에 1:n 관계를 가지는 자료구조- 원소들 간에 계층 관계를 가지는 계층형 자료구조- 상위 원소에서 하위 원소로 내려가면서 확장되는 Tree 모양의 구조- 한 개 이상의 노드로 이루어진 유한 집합 ⇒ 루트(Root): 노드 중 최상위 노드 ⇒ 나머지 노드들: n(>=0)개의 분리 집합 T1, ... ,TN으로 분리될 수 있음 - T1, ..., TN은 각각 하나의 트리가 되며(재귀적 정의), 루트의 서브트리라고 함노드(node): 트리의 원소간선(edge): 부모 노드와 자식 노드를 연결구성요소설명루트 노드 (Root node)트리의 시작 노드형제 노드 (Sibling node)같은 부모 노드의 자식 노드들조상 노드 (Ancestor node)간선을 따라 루트 ..
[계산기]문자열로 이뤄진 계산식 => 스택 이용하여 계산 가능- 일반적인 계산 방법: 중위표기법의 수식을 후위표기법으로 변경 후 스택을 이용하여 계산Step 1: 중위표기식의 후위표기식 변환 방법 1) 입력 받은 중위표기식에서 토큰을 읽음2) 토큰이 피연산자이면 토큰 출력3) 토큰이 연산자(괄호 포함)일 경우- 우선순위가 높으면 → 스택에 push- 우선순위가 안 높으면 → 연산자의 우선순위가 토큰의 우선순위보다 작을 때까지 스택에서 pop한 후 토큰의 연산자 push- top에 연산자가 없으면 push4) 토큰이 오른쪽 괄호 ')'일 경우- 스택 top에 왼쪽 괄호 '('가 올 때까지 스택에 pop 연산 수행- pop한 연산자를 출력- 왼쪽 괄호를 만나면 pop만 하고 출력은 X5) 중위표기식에 더 읽..
[Stack 자료구조]Stack: 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조 (선형구조) => 활용도 多- 후입선출(LIFO)인건 기본 지식- 자료를 선형으로 저장할 저장소 필요 => 리스트로 구현- 마지막 삽입된 원소의 위치: top- 삽입 연산: push / 삭제 연산: pop / 공백 확인 연산: isEmpty / top에 있는 원소 반환: peek# push 알고리즘def push(item): # 파이썬 리스트: 크기 제한 없이 데이터 삽입 가능 => overflow 고려할 필요 X # append() 함수로 리스트 마지막에 요소 넣을 수 있음 => top 변수 사용할 필요 X s.append(item) # pop 알고리즘def pop(): if len(s) == 0: # 리스트..
연습문제 풀기 전 강의 듣기. 모르는 것만 정리할거임.[ 부분집합 알고리즘 ]1. Loop를 이용하여 확인하고 부분집합 생성하기bit = [0, 0, 0, 0]for i in range(2): bit[0] = i # 0번째 원소 for j in range(2): bit[1] = j # 1번째 원소 for k in range(2): bit[2] = k # 2번째 원소 for l in range(2): bit[3] = l # 3번째 원소 print(bit) # 생성된 부분집합 출력☆2. 비트연산자 사용해서 간결하게 부분집합 생성하기arr = [3, 6, 7, 1, 5, 4]n = len(arr) # n: 원소의 개수for i in..
본격적으로 하기 전에 문제만 조금 훑어봤는데 문제가 지금 누가 봐도 "니가 날 푼다고?" 이러고 말하는 것 같다. 포기하고 싶지만 지금 포기하면 아무 것도 안되겠지. 4828. N개의 양의 정수에서 가장 큰 수와 가장 작은 수의 차이를 출력하시오. [입력]첫 줄에 테스트 케이스의 수 T가 주어진다. ( 1 ≤ T ≤ 50 ) 각 케이스의 첫 줄에 양수의 개수 N이 주어진다. ( 5 ≤ N ≤ 1000 )다음 줄에 N개의 양수 ai가 주어진다. ( 1 ≤ ai≤ 1000000)[출력]각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다. T = int(input()) # 테스트 케이스 개수 Tfor test_case in range(1, T+1): # 테스트 케이스 개수만큼 반복..
PT 끝나고 와서 다시 시작하는 파이썬 기초 공부. 지금 완전 녹초인데 그래도 오늘 하기로 한 건 끝내고 자야 마음 편할 것 같아서 다시 시작.시작하기 전에 Expert Academy 객체지향 부분만 강의 봤는데 설명 잘하시더라. 물론 막상 '너가 해봐'하는 상황에서는 제대로 못할 것 같지만. 1. 국어, 영어, 수학 점수를 입력받아 합계를 구하는 객체지향 코드를 작성하십시오. 이 때 학생 클래스의 객체는 객체 생성 시 국어, 영어, 수학 점수를 저장하며, 총점을 구하는 메서드를 제공합니다. class Score: def __init__(self, korean, english, math): self.__korean = korean self.__english = english..
앞 과정인 리스트, 튜플, 셋, 딕셔너리 싹 건너뛰고 잘 모르는 문자열이랑 객체지향부터 하기로 결정! 근데 운동 가기까지 1시간 밖에 안남아서 문자열 연습문제 풀다가 중간에 사라질 듯.. 1. 다음의 결과와 같이 회문(앞뒤 어느 쪽에서도 같은 단어, 말) 여부를 판단하는 코드를 작성하십시오. 어라.. 회문 문제 전에 봤던 것 같은데. 그때는 그냥 철자 하나하나를 거꾸로 저장해서 비교했다면, 이번에는 어떤 다른 접근 방식으로 풀어야 하는걸까.for i in range(len(words)//2): if words[i] != words[-i-1]: print("입력하신 단어는 회문(Palindrome)이 아닙니다.") breakprint("입력하신 단어는 회문(Palindrome..