<
728x90
반응형

전체 글 85

[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,..

[개인 프로젝트] Python으로 2048게임 만들기 # 1

버그 1. - a를 눌러 왼쪽으로 이동시켰는데 합쳐진 4는 사라지고, 그 자리에 2가 랜덤으로 생겨난 상황. - 작업 순서가 잘못된 듯하다. - 그럼에도 score은 제대로 올라감 Sol) - 원래는 4로 합쳐진 다음, 남은 공간 중 하나에 2가 생성되어야 함. 버그 2. - s키를 눌러 22를 합치려 했는데 밑에 4까지 합쳐진 상황 - 마찬가지로 score은 제대로 입력됨. (함수의 중요성) Sol) - 4는 밑으로 이동하고, merge는 한 턴에 한 번만 되도록 해야 함. 밑에 합칠 수 있는 수가 있다고 무조건 내려오면 안 됨. - 해결방법: - 반복 시 merged라는 변수를 추가해 한 번 merge 된 칸은 다시 merge 될 수 없도록 하였음. - 버그 3. - 가만히 있는 숫자 중에서 2가 나..

개인 프로젝트 2021.12.15

[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] 1210 / file 입출력, 클래스 #1

파일 입출력을 하기 위해서는 여러 방법이 있다. 먼저, 가장 기본적인 open()을 이용한 방법이 있다. (open('이름', '용도')로 사용) 같은 폴더 내에 'hello.txt'파일을 만든 후, 그 파일에 'hello, world!'를 쓰는 프로그램은 다음과 같다. file = open('hello.txt', 'w') file.write('hello, world!') file.close()​ 이때 file.close()를 해줘야 메모리가 낭비되지 않고, 사소한 실수가 중대한 피해로 이어지는 걸 막을 수 있다. 'w'의 의미는 파일을 쓰는 용도로 열겠다는 뜻이다. write()를 하게 되면 파일에 기존에 있던 내용은 삭제되고, 새로운 내용이 적힌다. 이제 파일의 내용을 읽는 법을 알아보자. file ..

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

스도쿠는 재미있는 게임이다. 9 * 9 칸 안에서 한 세로줄, 한 가로줄, 한 블록(3*3 칸, 여기서는 '블록'이라는 표현을 쓰겠음) 안에 1부터 9까지의 자연수가 겹치지 않도록 배열하는 규칙 내에서 모든 칸의 수를 채우는 게임이다. 예) 9 1 5 2 5 3 1 4 9 8 2 7 2 5 9 8 4 1 9 5 5 9 2 7 3 1 4 5 9 6 3 6 1 5 9 8 7 5 정답은 아래와 같다. 9 3 6 2 1 8 7 4 5 8 2 4 7 5 3 1 9 6 5 1 7 4 9 6 8 3 2 7 6 2 5 3 1 9 8 4 3 8 1 6 4 9 2 5 7 4 5 9 8 2 7 6 1 3 1 4 5 9 6 2 3 7 8 6 7 3 1 8 5 4 2 9 2 9 8 3 7 4 5 6 1 이와 같이 빈 숫자들을 ..

개인 프로젝트 2021.12.10

[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] 1202

몰랐던 기능들 ord() -> 문자 => 아스키코드 변환 chrd() -> 아스키코드 => 문자 변환 .isalpha() -> 알파벳으로만 구성되었는지 확인 find() 함수 -> index()와 동일한 기능. 대신 값이 없으면 -1을 반환하고(index는 ValueError뜸), index와는 다르게 리스트, 튜플에서 사용 불가. 문자열에서만 사용가능함. (https://ooyoung.tistory.com/78 참고함) 주의할 점들 input = sys.stdin.readline().split() -> .split() 넣어줘야 뒤에 개행 문자 사라짐(안하고 str쓰려하면 개행문자 오류남) 대신 sys.stdin.readline()은 무조건 리스트 안에 문자열이 들어감. reversed()는 기존 변수는..

[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) -> 리스트 안에 요소가 얼마나 들어..

728x90
반응형