파이썬 21

pygame을 이용하여 슈팅게임 만들기 1탄 [세무민의 코딩일기]

안녕하세요 세기무민입니다. 이번에는 파이썬으로 게임 개발하는 포스팅으로 찾아왔어요...ㅎㅎ 사실 진짜 취미로 시작했다가 재미가 붙어서...ㅎ 무튼 포스팅 해보도록 할께요 ㅎ 게임 화면 및 과정 조금 허접한 메인 화면입니다..ㅎ 아직 초기 단계로 개발한거라서 사실 디자인은 추후에 바꿔볼 생각입니다. 여기서 키보드 'A' 를 클릭하면 실행이 됩니다. 실행이 되면 큰 운석과 작은 운석들이 랜덤하게 나오도록 구성했어요 큰 운석의 경우 2번, 작은 운석은 1번 공격하면 없애지도록 구성했습니다. 그리고 운석에 부딛히게 되면 게임이 종료되도록 구성했고 현재까지 개발한 게임 구성은 위와 같아요 ㅎㅎ 게임 개발 To-Do List 사실 심플 프로젝트처럼 할 생각은 없었는데 하다보니 뭔가 욕심이 생기더라구요...ㅎ 그래서..

Programing/Python 2022.04.06

프로그래머스 비밀지도 문제 풀이 - [세무민의 코딩일기]

안녕하세요 세기무민입니다. 이번에 풀어볼 문제는 2018년도 카카오 블라인드 테스트 1차 비밀지도 문제입니다. 문제 설명 입출력 및 예시 문제 풀이 이번 문제는 위의 설명대로 문제를 접근하면 됩니다. 요약을 하자면 1. 2진수로 변환하기 2. 2진수로 변환한 수의 자리수를 맞춰주기 3. 2진수로 변환한 값들을 비교 및 #으로 출력 arr1과 arr2의 값들을 2진수로 변환해서 두개를 합쳤을 때 1인 경우에 #으로 표시해주면 됩니다. 여기서 2진수로 변환하는 방법이 여러가지가 있지만 저는 format을 이용하였습니다. 2진수로 변환을 완료했다면 다음으로 확인할 것은 해당 배열의 자리수와 일치하는지 확인이 필요하고 만약 자리수가 다르면 자리수를 맞춰주면 됩니다. 마지막으로 자리수를 맞췄다면 해당 값들을 비교..

프로그래머스 키패드 누르기 문제풀이- [세무민의 코딩일기]

안녕하세요 세기무민입니다. 이번에 돌아온 포스팅은 프로그래머스 알고리즘 풀이 문제로 돌아왔습니다. 문제설명 입출력 예시 문제풀이 우선 저는 이 문제를 보자마자 메모장에 그림을 그렸습니다. 전화기가 위와 같이 있다고 가정하면 일단 왼쪽의 숫자들은 3으로 나눴을 때 나머지가 1인 경우의 수 오른쪽의 숫자들은 3으로 나눴을 때 나머지가 0인 경우의 수라는 것을 알 수 있습니다. 그런 뒤 이 문제에서 가장 중요한건 가운데 숫자를 클릭하는 방법인데 우선은 가운데 숫자들은 3가지의 조건을 생각해봤습니다. 1. 왼쪽과 오른쪽의 길이가 같은 경우 2. 왼쪽이 오른쪽 길이보다 큰 경우 3. 오른쪽이 왼쪽 길이보다 큰 경우 위와 같이 3가지로 나눌 수 있는데 그렇다면 어떻게 길이를 구분할 지 고민해본 끝에 좌표 이동을 생..

프로그래머스 실패율(2019 KAKAO BLIND RECRUITMENT) 문제 풀이

이번에 풀어볼 알고리즘 문제는 실패율 문제 풀이입니다. 1. 문제 설명 2. 제한 사항 및 입출력 3. 문제 풀이 이번 문제는 스테이지 별로 구분할 필요가 있다. 예를 들어서 N은 5, Stage는 [2, 1, 2, 6, 2, 4, 3, 3]을 그대로 풀이해보자. 스테이지의 개수는 5, 즉 Stage가 가질 수 있는 값은 최대 5이며 그 이상은 제외하면 된다. Stage를 나눠보면 2는 3명, 1은 1명, 3은 2명, 4는 1명 그리고 6은 스테이지 개수에 없기 때문에 제외한다. 1스테이지부터 N스테이지까지 수를 아래의 표로 볼 수 있다. N : 1 1 / 8 N : 2 3 / 7 N : 3 2 / 4 N : 4 1 / 2 N : 5 0 / 1 stage1의 경우 1개가 존재하기 때문에 전체 stage(..

[세무민의 코딩일기] 위클리 챌린지 8주차 최소직사각형 문제 풀이

이번에 풀어본 문제는 위클리 챌린지 8주차 최소직사각형 문제입니다. 사실 이 문제는 어렵지 않고 쉬운데 커피숍에서 친구 기달리는 시간에 풀어봤습니다. 1. 문제 설명 2. 제한 사항 및 입출력 3. 문제풀이 이번 문제는 카드의 가로와 세로중 가장 큰 값을 구해주면 됩니다. 가로와 세로중 가장 큰 값이라고 하면 해당 값을 정렬해서 가장 큰 값 2개를 곱해주면 끝입니다. 그렇지만 가장 중요하게 봐야 하는 포인트는 카드를 눕힐 때 세로와 가로를 바꿔서 눕힐 수 있다는 점 그 말은 즉 가로에는 가장 큰값들 세로에는 가장 작은값들을 넣은 뒤 정렬해서 그 중에 큰 값을 가져오면 됩니다. 예시 1번을 보면 원래는 80과 70으로 5600이 가장 크지만 (30, 70)을 세로로 눕혀서 80과 다음으로 큰 50으로 40..

세무민의 코딩일기 : 화재와 소방공무원 및 장비의 관계 분석(오랜만에 데이터 분석하기)

최근 직장인으로 살아가다보니 예전에 내가 뭘 했는지 git에 올려져 있는 파일들을 보면서 추억에 빠졌습니다. 이에 따라서 한번 예전에 만들었던 데이터 분석에 대해서 포스팅을 해보는 것도 괜찮겠다고 생각이 되어서 포스팅을 진행하게 되었습니다. 이론과 실습을 구분지어 진행하고 싶지만 바로 확인해볼 수 있도록 진행해보겠습니다. 예전에 진행했던 프로젝트 중 하나는 소방공무원과 관련된 장비들 등 화재와 연관되어있는지를 분석하는 프로젝트를 했었습니다. 당시에 말도 안되는 프로젝트라고 생각했지만 그 당시 의견을 제시했던 팀원과 함께 진행했는데 생각보다 재미있는 좌표는 아니였지만 데이터 분석하는 과정을 알 수 있었습니다. 오늘 포스팅에서 다룰 부분은 일부였던 소방대상물에 대해 다뤄볼 것입니다. 소방대상물은 말 그대로 ..

Programing/Python 2021.07.17

세무민의 알고가자 : 프로그래머스 구명보트 문제 풀기

오늘 풀어볼 문제는 구명보트! 문제 설명 제한 사항 및 입출력 풀이 이번 문제는 탐욕법을 이용하는 문제에요 말 그대로 최소보트의 개수를 구해주면 됩니다. 예를 들어서 [70, 80, 50]을 보도록 하죠! limit가 100이라는 건 보트 한개에 최대 용량입니다. 보트에는 최대 2명만 탑승 가능한 경우의 수를 다 만들어보면 70, 80, 90, 70+80, 70+50, 80+50에서 100이하는 70, 80, 90 총 3개입니다. 따라서 최소 보트의 개수는 3개가 필요하게 됩니다. 즉 요약하자면! 1. 보트에는 최대 2명 탑승 가능하다는 조건 2. limit 이하로 탑승 가능하다는 점 3. 정렬을 하면 크기 비교가 더 쉽다. 탐욕법을 이용하게 되면 가장 빠른 접근 방법은 반복문이 되겠죠? 코드 def s..

세무민의 코딩일기 : 프로그래머스 완주하지 못한 선수 문제 풀기

이번에 풀어볼 문제는 완주하지 못한 선수! 이 문제는 생각해보면 쉽지만 효율성에서 통과하기 어려웠던 문제 중 하나 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한 사항 및 입출력 예시 [ 제한사항 ] 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이..

세무민의 코딩일기 : 프로그래머스 신규 아이디 추천 문제 풀기

이 문제를 포스팅 하는 이유는....... 진짜 간단한 문제를 1시간 30분동안 풀었다는 점에서... 사실 풀고 난 후 테스트 케이스에 통과 못한 것들이 존재해서....하 ㅠㅠ 이번에 풀 문제는 신규 아이디 추천! 20201년 카카오 신규 블라인드 모집 문제 중 하나입니다. 문제 설명 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다...

세무민의 코딩일기 : 프로그래머스 스킬트리 문제 풀기

확실한 건 그리디랑 동적 다이나믹 프로그래밍 공부를 안하다보니 멘탈은 괜찮아지구 쉬운 문제들만 풀어서 그런가... 오늘 4문제나 풀었다 ㅋㅋㅋㅋㅋㅋㅋㅋ 그 중 한문제를 소개해보면! 바로 스킬트리 문제! 이 문제는 Summer/Winter Coding에 속한 문제이다. 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 ..