본문 바로가기

전체 글

(89)
풍선 터트리기 def solution(a): left_min = float('inf') right_min = float('inf') answer =set() for left,right in zip(a,reversed(a)): if left 코드 설명초기화left_min과 right_min은 각각 양쪽 끝에서 현재까지 탐색한 최소값을 저장합니다. answer는 set 자료형으로 중복된 요소를 방지합니다.반복문zip(a, reversed(a))를 사용하여 a 배열의 양쪽 끝에서 시작하는 두 개의 포인터(left와 right)를 동시에 탐색합니다.조건문left 요소가 현재 left_min보다 작을 경우, left_min을 갱신하고 answer 집합에 추가합니다.right 요소가 현재 rig..
2019 KAKAO BLIND RECRUITMENT 후보키 1. 문제 정의: 후보 키란 무엇인가?후보 키는 데이터베이스에서 유일하게 각 행(row)을 식별할 수 있는 최소한의 속성(attributes) 집합을 의미합니다. 예를 들어, 학생 데이터베이스에서 학번 필드는 학생 개개인을 식별할 수 있는 후보 키가 될 수 있습니다. 이 포스팅에서는 후보 키를 찾는 문제를 파이썬으로 해결하는 방법을 설명하겠습니다.2. 접근 방법: 효율적인 후보 키 찾기 전략후보 키를 찾기 위해서는 두 가지 조건을 만족해야 합니다.유일성: 특정 속성 집합으로 모든 레코드를 유일하게 식별할 수 있어야 합니다.최소성: 후보 키 집합에서 하나의 속성을 제거하면 유일성을 잃어야 합니다.효율적으로 후보 키를 찾기 위해 모든 속성의 조합을 만들고, 각 조합이 위 두 조건을 만족하는지 확인해야 합니다..
2024 KAKAO WINTER INTERNSHIP 주사위 고르기 A와 B가 n개의 주사위를 가지고 승부를 합니다. 주사위의 6개 면에 각각 하나의 수가 쓰여 있으며, 주사위를 던졌을 때 각 면이 나올 확률은 동일합니다. 각 주사위는 1 ~ n의 번호를 가지고 있으며, 주사위에 쓰인 수의 구성은 모두 다릅니다.A가 먼저 n / 2개의 주사위를 가져가면 B가 남은 n / 2개의 주사위를 가져갑니다. 각각 가져간 주사위를 모두 굴린 뒤, 나온 수들을 모두 합해 점수를 계산합니다. 점수가 더 큰 쪽이 승리하며, 점수가 같다면 무승부입니다.A는 자신이 승리할 확률이 가장 높아지도록 주사위를 가져가려 합니다.다음은 n = 4인 예시입니다.주사위구성#1[1, 2, 3, 4, 5, 6]#2[3, 3, 3, 3, 4, 4]#3[1, 3, 3, 4, 4, 4]#4[1, 1, 4, 4,..
수식 복원하기 문제 설명당신은 덧셈 혹은 뺄셈 수식이 여러 개 적힌 고대 문명의 유물을 찾았습니다. 이 수식들을 관찰하던 당신은 이 문명이 사용하던 진법 체계가 10진법이 아니라는 것을 알아냈습니다. (2 ~ 9진법 중 하나입니다.)수식들 중 몇 개의 수식은 결괏값이 지워져 있으며, 당신은 이 문명이 사용하던 진법에 맞도록 지워진 결괏값을 채워 넣으려 합니다.다음은 그 예시입니다.14 + 3 = 1713 - 6 = X51 - 5 = 44 해당 문제는 몇가지 주요 단계로 나누어서 해결했습니다.진수 변환: 산술 연산을 수행하려면 진수 간에 숫자를 변환해야 합니다.평가: 각 표현식에 대해 결과를 직접 계산할 수 있는지 또는 알 수 없는 사항을 알아내야 하는지 결정합니다.결과 형식화: 마지막으로 지정된 출력 요구 사항에 따라..
퍼즐 게임 챌린지 문제 정의주어진 diffs 리스트는 각 구간별로 발생하는 차이를 나타내며, times 리스트는 각 구간의 작업 시간입니다.특정 구간에서 diffs[i]가 임계값보다 큰 경우, 해당 구간을 줄이기 위해 추가 작업이 필요합니다.limit은 총 작업 시간의 제한을 나타내며, 이 시간을 초과하지 않는 선에서 diffs의 최대값을 가능한 한 낮춰야 합니다.코드 구현def solution(diffs, times, limit): answer = 0 left = 1 right = max(diffs) while left mid: cnt += (times[i] + (times[i-1] if i != 0 else 0)) * (diffs[i] - mid) ..
다단계 칫솔 판매 다단계 판매 조직에서는 수익이 판매자뿐만 아니라 추천인에게도 분배됩니다. 이렇게 분배되는 구조를 코딩으로 해결하는 것은 꽤 흥미로운 문제입니다. 이번 포스팅에서는 Python으로 간단히 다단계 수익 분배 알고리즘을 구현하는 방법을 살펴보겠습니다.문제 설명enroll: 각 판매자의 이름 목록입니다.referral: 각 판매자가 가입 시 추천한 추천인의 이름 목록입니다. 추천인이 없는 경우 '-'로 표시됩니다.seller: 이번에 판매를 발생시킨 판매자 이름 목록입니다.amount: seller와 일대일로 매칭되는 판매량 목록입니다.판매자의 수익에서 10%는 상위 추천인에게 전달되고, 90%만 자신에게 남습니다. 추천인이 계속 연결된 경우, 10%를 상위 추천인에게 전달하는 것을 반복합니다. 아래 코드는 이..
git actions로 testcode 돌려서 에러 확인하기 git actions로 github repository에 push를 할때 자동으로 testcode를 실행을 하게해서 바뀐 코드에 에러가 있는지 아닌지 확인을 하기 위해서 짯습니다. 먼저 python manage.py test 를 터미널에 치면 test.py에 작성된 내용을 돌리게 되는데 이걸 github에서 돌리기 위해서는 먼저 파이썬부터 세팅을 해줘야합니다. steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v3 with: python-version: 3.11 저희는 파이썬 3.11 버전으로 했기때문에 3.11을 했지만 만약 다른 버전을 이용하셨다면 다른 버전을 입력해주시면되고 그다음에는 패키지 파일 설..
Git Actions 을 이용한 프론트엔드 배포 자동화 프론트엔드를 배포할때 s3를 통해 프론트 엔드 파일을 넣고 cloud front 로 s3에 있는 데이터를 가져와서 보여주는 방식으로 프론트엔드를 배포를 구현했는데 이것을 자동화시키기 위해서 먼저 vue js를 통해 프론트엔드를 만들었기때문에 먼저 배포를 위한 형태로 만들어줘야하기떄문에 npm run build를 해야합니다 name: depoly vue to s3 on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest env: AWS_ACCESS_KEY_ID: ${{ secrets.ACCESS_KEY }} AWS_SECRET_ACCESS_KEY: ${{ secrets.SECRET_ACCESS_KEY }} steps: - name: checkout..