<
728x90
반응형

Python 17

[Python] 스도쿠 풀이 프로그램 #2

'쉬운' 스도쿠를 풀 수 있는 스도쿠 알고리즘을 알아보자. 먼저 원리는 다음과 같다. 1. 빈칸이 있는 스도쿠를 입력받는다. 2. 숫자가 없는 빈칸(가능성 칸)에 각각 들어갈 수 있는 수들을 채워 준다. 3. 행, 열, 블록(3 * 3 칸) 내에서 각각 가능성 칸에 있는 수가 유일한 수가 있다면 그 4. 이를 반복한다.숫자를 채운다. 이 알고리즘을 사용하면 가정이 필요한 스도쿠 이외의 모든 쉬운 스도쿠를 풀 수 있다. 코드는 다음과 같다. https://github.com/siejwkaodj/Sudoku/blob/second/sudoku_2.py GitHub - siejwkaodj/Sudoku: 스도쿠 풀이 알고리즘 스도쿠 풀이 알고리즘. Contribute to siejwkaodj/Sudoku deve..

개인 프로젝트 2022.01.13

[Python] 조합 알고리즘 구현하기

백준 2798번을 풀다 조합을 이용한 풀이를 생각했고, 이전에 모듈로 Combination을 가져다 쓴 기억이 있어 한번 직접 만들어 보는 것도 좋겠다 싶어 Combination을 구하는 알고리즘을 만들어 보았다. 만약 빠르게 조합을 구현하고 싶다면 itertools 라이브러리를 import 해서 조합, 순열 등을 구현할 수 있다. 이는 다음 블로그에 잘 정리되어 있다 https://yganalyst.github.io/etc/memo_18_itertools/ [Python] itertools, 원소의 경우의 수(순열, 조합) 추출하기 itertools 라이브러리를 활용해서 원소들의 경우의 수를 추출하는 방법을 배워보자. yganalyst.github.io 조합의 정의는 다음과 같다. (출처 : https..

Computer Science 2022.01.09

[Pylearn] 1222 / 딕셔너리 응용

추가 - 딕셔너리는 키-값 쌍의 형태를 지닌 자료구조이다. - 먼저 딕셔너리에서 가장 중요한 메서드 2개는 다음과 같다. - setdefault : 키-값 쌍 추가(수정은 불가) - update : 키-값 수정/추가(괄호 안에 들어가는 건 키가 문자열일때만 가능, 아닐 때는 전체 딕셔너리를 넣어야 함) # setdefault 메서드 -> 새로운 키-값 추가 x = {'a' : 10, 'b' : 20, 'c' : 30, 'd' : 40} x.setdefault('e')# 키만 추가 print(x)# {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None} x.setdefault('f', 100)# 키와 값 추가 print(x)# {'a': 10, 'b': 20, 'c': 30,..

[Pylearn] 1213 / 문자열 응용하기

- 문자열 일부 바꾸기 - s.replace('arr1', 'arr2')로 사용. word = 'python is great' word.replace('python', 'c') print(word) #c is great - 만약 문자열이 일치하지 않는 경우 -> word.replace('bython', 'c') print(word)# python is great => 바꿀 문자를 찾지 못하고 그대로 출력된다. 응용 => 문자열 A가 있을시에 A를 문자열 B로 바꾸는 프로그램을 만들 때 A가 있는지부터 검사할 필요 없이 바로. replace('A', 'B') 하면 된다. - 문자 바꾸기 - translate(str.maketrans('aeiou', '12345'))으로 사용. - table = str.ma..

[Python] 1205 List Comprehension(리스트 표현식) 및 문자열, 백준 2869번

python 리스트 comprehension 표현식 arr = [i for i in range(10)] -> [0 1, 2, 3, 4, 5, 6, 7, 8, 9] 생성. 이때 range대신 시퀀스 들어가도 가능. 뒤에 if문 붙여서 [i for i in range(10) if i % 2 == 0] -> [0, 2, 4, 6, 8] 생성. for문 여러 개 중첩 가능. 예) 2단 ~ 9단 리스트 만들 시 [i * j for i in range(2, 10) for j in range(1, 10)] 하면 i가 2부터 9까지 반복될 때 각각 j 가 1부터 9까지 반복됨. 인셉션처럼 갈수록 반복문이 깊어지는 것. 문자열 응용하기 .replace() '문자열'. replace('원래 문자열', '나중 문자열') -..

[Python] 1201 공부한 점들

몰랐던 점들 arr.append(a) -> 가장 많이 쓰는 방법, 리스트에 a요소 하나를 추가할 때 사용. arr.extend(arr_1) -> arr에 다른 리스트 추가함. 리스트에 리스트를 추가할 때 사용. arr.insert(a, b) ->arr의 a 인덱스에 b를 추가함. 리스트 중간에 요소 하나를 추가할 때 사용. ** 또는 arr[3:3] = [1, ..., 10]과 같이 슬라이싱을 이용해 리스트 중간에 리스트를 끼워 넣을 수 있음. 인덱스를 조작해 일부분을 대체하는 것도 가능. *** arr[len(arr):] = [1, ..., 10] -> extend와 동일한 기능. -> 슬라이싱을 이용해 다양한 작업 가능. 기타 다양한 기능들 arr.count(a) -> 리스트 안에 요소가 얼마나 들어..

유전 알고리즘으로 사이클로이드 유도하기 [1]

Making Cycloid by Genetic Algorithm 0. 개요 사이클로이드가 최소 강하 곡선인 이유를 탐구하다, 해당 내용을 보고 사이클로이드를 유도하는 방법을 알게 되었다. https://suhak.tistory.com/88 사이클로이드(cycloid) 사이클로이드란? 구르는 원 위에 있는 한 정점이 그리는 자취를 사이클로이드라고 부른다. 위키백과로 가기 그림에서 원점과 접해있던 반지름이 1인 원이 $x$축을 따라 $t$만큼 굴러갔을 때 원점 suhak.tistory.com 또한 여기서 사이클로이드를 그릴 수 있었는데, 해당 코드는 다음과 같다. from math import sin, cos, pi import numpy as np import matplotlib.pyplot as plt ..

Computer Science 2021.08.09
728x90
반응형