solved.ac 기준 실버2 수준이었던 제게는 매우 어려웠던 스터디 연습 문제 이 문제를 푸는 과정을 적으며, 효율적인 알고리즘에 대한 복기를 해보려고 합니다. [문제] 복면산이란 수학 퍼즐의 일종으로, 어떤 계산식의 각 숫자들을 특정 문자로 바꾸면 각 문자가 어떤 숫자인지 맞추는 퍼즐이다. => 각 문자가 어떤 '숫자' 인지 맞추는 퍼즐입니다. 저는 '숫자'와 '수'를 혼동해서 "A = 10 같은 것도 가능할까?" 같은 쓸데없는 고민도 했었습니다. 복면산 문제가 주어질 때, 답이 존재하는지 여부를 출력하시오. 단, 같은 문자는 같은 숫자에 대응되어야 하며, 서로 다른 문자는 서로 다른 숫자를 나타낸다. 또한, 수는 0으로 시작할 수 있다. =>아래 예시 힌트가 없었다면 빼먹고 체크를 안할 수도 있었던..
tkinter를 이제 결합해보려고 합니다. https://076923.github.io/posts/Python-tkinter-19/ Python tkinter 강좌 : 제 19강 - LabelFrame | 076923 LabelFrame(라벨 프레임) 076923.github.io tkinter 와 관련된 강좌글은 이 게시글을 참고하여 작성했습니다. 설명을 정말 친절하면서도, 자세하고, 이해하기 쉽게 잘 해주셨더라구요ㅎㅎ 프로그래밍 과정은 사실 이것보다 더 복잡하게 수많은 디버깅을 거치며 진행했지만, 현재까지의 결과물을 토대로 간단하게 과정을 적어보고자 합니다. cpu_try = list() cpu_num = [0] answer_cmp = set() layout = list() 우선 변수를 선언해주었습니..
교수님께 기존 아이디어에 대해 피드백을 드렸더니 브루트포스 알고리즘은 너무 비효율적이고 재미가 없다고 하셨습니다 그래서 다른 알고리즘을 고민해보다가 한가지를 떠올렸습니다. 기존 아이디어가 가능한 모든 답에서 답이 될 수 없는 것들을 지워나가면서 답을 추론했다면 이번엔 거꾸로 제시된 결과를 토대로 가능한 정답군 집합을 만들어버리는 것입니다. 정답군 리스트에서 랜덤하게 수를 하나 제시하면 다시 결과를 알려줄 것이고 그렇다면 그 결과를 토대로 다시 정답군 집합을 또하나 만듭니다. 그리고 그 둘의 교집합을 구하면 되는 것이죠. 이 알고리즘의 단점은 두번째 정답군을 만드는 과정에서 굳이 필요없는 여집합이 될 요소들까지 카운트하게 된다는 점입니다. 이 부분에 대한 개선은 우선 추후에 고민하기로 하고, 앞서 생각한 ..
팀원분과 한번 만나서 상의를 해보면서 기본적인 프로그램 틀을 짠 것 같습니다. 우선 기본세팅에 대해 대전이 가능한 인공지능을 구현해보았습니다. https://m.blog.naver.com/PostView.nhn?blogId=bluesune&logNo=66599203&proxyReferer=https:%2F%2Fwww.google.com%2F [C 언어] 1인용 인공지능 숫자야구게임 + 알고리즘 인공지능 야구게임 수를 입력하면, 컴퓨터가 맞추는 게임. 알고 있는 거의 모든 인공지능 야구게임중가장 ... blog.naver.com 알고리즘은 이 분의 알고리즘을 그대로 파이썬으로 구현해보았습니다. 보통 4번정도만에 정답을 맞추더라구요 소스코드는 다음과 같이 짜보았습니다. from random import * ..
학교에서 팀플로 프로젝트를 하게 되었습니다. 자유로운 주제로 파이썬을 이용한 프로그램 개발입니다. 1달도 안 되는 짧은 기간 동안의 프로젝트가 될 것 같습니다. 1. 주제 구상 우선 생각한 주제는 인공지능 숫자야구 전에 있던 대학교에서 C언어로 숫자야구 게임을 만들어봤던 기억이 나서 이 주제를 떠올렸습니다. 다만 그때는 컴퓨터가 만든 숫자를 사람이 맞추는 방법이라 그 반대로도 해본다면 어떨까 하는 마음으로 구상했습니다. 사용할 예정인 모듈은 GUI를 위한 tkinter 모듈과 난수 생성을 위한 랜덤 모듈 두 가지입니다. 구체적으로 들어가면 사람 vs 사람 / 사람 vs 컴퓨터 이 두 가지 모드를 고르는 것이 우선입니다. (이렇게 쓰고 보니 컴퓨터 vs 컴퓨터로 해서 누가 이길지로 배팅하는 것도 재밌어 보..