본문 바로가기

알고리즘

(63)
백준 - 11050(이항 계수, python) https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 접근 nCk : (n! / k!(n - k)!)를 출력해주는 문제 파이썬의 math에서 factorial을 import해줘도되고 factrorial을 직접 만들어도 된다. math 라이브러리를 활용한 코드 from math import factorial n, k = map(int, input().split()) b = factorial(n) // (factorial(k) * factorial(n-k)) print(b) 직접 구현한 코드 def factorial(n):..
백준-1018(체스판 다시 칠하기, python) https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 분석 완전탐색문제 배열을 8칸씩 잘라서 w로 시작할때 다시칠해야하는 경우, b로 시작할때 다시칠해야하는 경우로 나눔 모든 경우의 수를 구한 후 제일 작은 경우의 수를 출력 정답 코드 n, m = map(int, input().split(" ")) #원래의 판 저장 original = [] #바뀐 체스판의 개수 count = [] for _ in range(n): original.app..
프로그래머스 - 폰켓몬(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 전체 폰컷몬 중 절반을 가져감 최대한 다양한 종류의 폰켓몬을 가져갈 때, 최대 값은? set을 활용해 폰켓몬의 종류를 파악 모든 종류를 가져갈 수 있으면 다 가져가고, 다 못가져가면 전체 중 절반이 가져갈 수 있는 종류의 최대 값임 정답 코드 def solution(nums): answer = 0 set_nums = set(nums) if len(nums) == 0: return 0 el..
프로그래머스 - 추억점수(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 각 이름에 점수가 매겨지는데 이 차원 배열에서 이 점수의 합을 배열로 리턴하는 문제 dictionery로 이름, 점수를 주고 각 이름에 해당하는 점수를 꺼내서 더해주면 되는 간단한 문제인듯 정답 코드 def solution(name, yearning, photo): answer = [] dic = {} for i in range(len(name)): dic[name[i]] = year..
프로그래머스 옹알이2(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/133499 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 문자열을 규칙에 맞게 변환하는 문제 코드 def solution(babbling): count = 0 babble = ['aya', 'ye', 'woo', 'ma'] for b1 in babbling: for b2 in babble: #두번 연속 같은 말 못함 if b2 * 2 not in b1: b1 = b1.replace(b2, ' ') if b1.strip() == '': cou..
프로그래머스 둘만의 암호(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 주어진 규칙에 맞춰 문자열 s를 변형시켜서 return해주면 되는 문제 index만큼 뒤에 있는 알파벳이 무슨 뜻이지? 했더니 그냥 알파벳 순서a,b,c,d....을 의미하는 것이었음 alpha = abcdefghijklmnopqrstuvwxyz를 선언하고 skip에 있는 문자들을 제거 s에 있는 문자를 alpha에서의 index에 자연수로 주어진 index값을 더해서 새로운 문자열을..
프로그래머스 숫자짝꿍(lv1, python) https://school.programmers.co.kr/learn/courses/30/lessons/131128?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제접근 두 정수 X, Y가 둘 다 갖고있는 수로 만들 수 있는 가장 큰 수를 리턴하는 문제 1~9까지 같은 수를 몇 개 갖고있는지 판별하는 것이 관건 풀이(다른사람 풀이 참고) def solution(X, Y): answer = '' for i in range(9, -1,-1): answer += str(i) * min(X.count(str(i)), Y.count..
프로그래머스 - 체육복(python) https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제접근 체육복 여분을 갖고 있는 학생과 체육복이 없는 학생을 비교해 체육복을 갖고있는 학생을 최대한 많이 만드는 경우의 수를 구하기 여분을 갖고 있는 학생은 한 명한테만 빌려줄 수 있음 자신의 앞, 뒤 번호의 학생한테만 빌려줄 수 있음 실패사례 def solution(n, lost, reserve): #여벌의 체육복을 갖고 있는사람이 도난당했을때 문제발생 #체육복을 갖고 있는 사람 answer ..