<
728x90
반응형

전체 글 83

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

외국인의 한국 국적의 취득 요건

다음 홈페이지를 참고하면 다음과 같다. https://www.gb.go.kr/open_content/tips/kor/page.jsp?largeCode=lifestyle&mediumCode=sojourn&smallCode=nationality&LANGCODE=KorTips > 외국인 배우자의 국적취득 별도로 법무부장관의 귀화허가를 받아야 하며1) 한국인 배우자와 혼인한 상태로 2년 이상 계속하여 대한민국에 거주 하거나2) 혼인기간이 3년 이상이고 한국에 1년 이상 계속 거주하여야 합니다. > 혼인신고를 하지 않고 동거할 때, 국적취득 한국인 배우자의 호적관서에 혼인신고를 하고 호적등본에 혼인사실이 등재된 외국인 배우자만이 혼인에 기한 간이귀화(혼인귀화) 신청을 할 수 있고, 동거하는 경우는 국내에 계속하여..

기타 2021.08.30

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

지난 포스팅에서는 유전 알고리즘을 통해 사이클로이드를 유도하는 법을 알아보았다. 하지만 교차 및 돌연변이 방식, 기울기를 정하는 방식, 정규화 방법 등 아직 개선점이 많이 필요한 모습을 보였다. 그중 무엇보다 적합도가 93% 이상 올라가지 않던 문제가 가장 해결하기 어려웠다. max_gen = 1000 num = 100 min_m = -10 mut_chance = 0.3 mut_rate = 0.4로 돌린 결과이다. 사진과 같이 최고 적합도는 크게 올라가지 않는 모습을 보여준다. 여기서 필자는 교차 및 돌연변이 방법에 문제가 있다고 생각해 해당 방법을 고민하던 중, 해당 프로그램을 보던 한 친구가 구간의 길이를 줄여보자는 아이디어를 건의했다. 현재 유전 알고리즘은 가로 5π, 세로 10인 공간 속에서 돌아..

Computer Science 2021.08.10
728x90
반응형