알고리즘
-
Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 04알고리즘 2022. 11. 3. 22:10
enumerate() enumerate() 함수는 인덱스와 원소를 짝지어 튜플로 꺼내는 내장 함수 x = ['John', 'George', 'Paul', 'Ringo'] for i in range(len(x)): print(f'x[{i}] = {x[i]}') for i, name in enumerate(x): print(f'x[{i}] = {name}') # 출력 결과 동일 # x[0] = John # x[1] = George # x[2] = Paul # x[3] = Ringo # 리스트의 모든 원소를 enumerate() 함수로 스캔 for i, name in enumerate(x, 1): print(f'{i}번째 = {name}') # 리스트의 모든 원소를 스캔하기(인덱스 값 사용하지 않음) for ..
-
Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 03 - 2알고리즘 2022. 11. 2. 23:44
02-2 배열이란? 스캔 (scan) 스캔이란 배열 원소를 하나씩 차례로 주목하여 살펴보는 방식 for i in range(1, len(a)): if a[i] > maximum: maximum = a[i] 주석과 자료형의 힌트 from typing import Any, Sequence def max_of(a: Sequence) -> Any: Any는 제약이 없는 임의의 자료형을 의미 Sequence는 시퀀스형을 의미 시퀀스형에는 리스트형, 바이트 배열형, 튜플형, 바이트열형이 있다 max_of() 함수는 건네받는 매개변수 a의 자료형은 Sequence이며 반환하는 자료형은 임의의 자료형인 Any 이 부분을 사용해 본적이 없어서 잘 모르겠다 스프링에서 annotation을 사용해 봤고 비슷하다고 생각은 되..
-
section3.1 이분 검색알고리즘 2022. 11. 2. 23:38
임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분 검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복 값은 존재하지 않습니다. import sys sys.stdin = open("input.txt", "rt") n, m = map(int, input().split()) list01 = list(map(int, input().split())) for x in range(n): list01.sort() if list01[x] == m: print(x+1) break 정답이지만 아마 테스트 범위가 짧아서 정답이 나온 것 같다 알고리즘 제대로 공부해 본적이 없어서 생각나는 대로 짰는데 정답을 보니 ..
-
Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 03 - 1알고리즘 2022. 11. 2. 15:01
ch02. 기본 자료구조와 배열 02-1 자료구조와 배열 배열 (array) 배열 : 묶음 단위로 값을 저장 배열은 객체가 저장되며 배열에 저장된 객체 하나하나를 원소라고 한다 이 원소들은 인덱스를 부여받는다 배열에는 서로 다른 자료형을 같이 저장할 수 있으며, 배열 원소 자체를 배열에 저장할 수 있다 리스트와 튜플 리스트와 튜플은 데이터 컨테이너라고 하며 비슷한 기능을 하지만 원소를 변경할 수 있는지 없는지에 차이가 있다 리스트의 기초 리스트는 원소를 변경할 수 있는 뮤터블 list형 객체이다 연산자 [] 안에 원소를 쉼표로 구분하여 표기 마지막 원소에 , 사용 가능 list = ['A','B', 'C',] 원소 없이 []만 사용하면 빈 리스트 생성 파이썬 내장 함수인 list()를 사용하면 문자열이나..
-
Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 02알고리즘 2022. 11. 1. 21:27
ch01. 알고리즘 기초 01-2 반복하는 알고리즘 while 문 반복 반복 구조(루프) : 어떤 조건이 성립하는 동안 반복해서 처리하는 것 사전 판단 반복 구조 : 실행하기 전에 반복을 계속할 것인지를 판단 for 문 변수가 하나만 있을 때는 while보다는 for 사용 가우스 덧셈 가우스 덧셈 = n(n+1)/2 (1부터 n까지 정수의 합) range() 함수로 이터러블 객체 생성 range(n) : 0이상 n미만의 수열 range(a, b) : a이상 b미만의 수열 range(a, b, step) : a이상 b미만인 수를 step 간격으로 나열하는 수열 이터러블 이터러블 객체 : 반복할 수 있는 객체 이터러블 자료형 : list, str, tuple 두 값 교환하기 1. a, b = b, a 1.1..
-
Do it! 자료구조와 함께 배우는 알고리즘 입문(파이썬) :: DAY 01알고리즘 2022. 11. 1. 01:04
ch01. 알고리즘 기초 01-1 알고리즘이란? 순차 구조 : 한 문장씩 순서대로 처리되는 구조 선택 구조 : 조건식으로 평가한 결과에 따라 프로그램의 실행 흐름이 변경되는 구조 파이썬에서 >>> 대화형 인터프리터로 파이썬 셸이라고도 한다. >>>가 표시된 창은 프롬프트라고 한다. float는 부동 소수점 방식을 사용한다. 부동 소수점은 컴퓨터에서 근삿값으로 표현할 때 사용한다. 부동 소수점 방식은 실수를 가수 부분과 지수 부분으로 나누어 표현하는 것 근삿값으로 표현되며 고정 소수점 방식보다 연산 속도가 느리다는 점 때문에 부동 소수점 방식을 위한 별도의 연산 장치를 두는 경우가 많다. 복합문의 구조 if나 while과 같은 키워드로 시작하여 콜론으로 끝나는 첫 부분을 헤더라고 한다. 콜론은 바로 뒤에 ..
-
section3.11 격자판 회문수알고리즘 2022. 10. 31. 17:01
1부터 9까지의 자연수로 채워진 7*7 격자판이 주어지면 격자판 위에서 가로방향 또는 세로 방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램을 작성하세요. 회문수란 121과 같이 앞에서부터 읽으나 뒤에서부터 읽으나 같은 수를 말합니다. 빨간색처럼 구부러진 경우(87178)는 회문수로 간주하지 않습니다. import sys sys.stdin = open("input.txt", "rt") chlist = [list(map(int, input().split())) for _ in range(7)] cnt = 0 # 가로 검사 2개 for x in range(7): for y in range(3): for z in range(2): if chlist[x][y+z] != chlist[x][y+4-z]:..
-
section3.10 스토쿠 검사알고리즘 2022. 10. 31. 16:48
스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9 개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다음을 보자. 위 그림은 스도쿠를 정확하게 푼 경우이다. 각 행에 1부터 9까지의 숫자가 중복 없이 나오 고, 각 열에 1부터 9까지의 숫자가 중복 없이 나오고, 각 3×3짜리 사각형(9개이며, 위에서 색 깔로 표시되었다)에 1부터 9까지의 숫자가 중복 없이 나오기 때문이다. 완성된 9×9 크기의 수도쿠가 주어지면 정확하게 풀었으면 “YES", 잘 못 풀었으면 ”NO"를 출력하는 프로그램을 작성하세요. import sys sys.stdin = open("input.txt", "rt") chlist = [l..