'Python/Python 코딩테스트' 카테고리의 글 목록 (3 Page)
본문 바로가기
반응형

Python/Python 코딩테스트51

[그리디 알고리즘5] 백준 4796번 캠핑 파이썬 백준 4796번 캠핑 📜 문제 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까? 강산이는 조금 더 일반화해서 문제를 풀려고 한다. 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V) 🚩 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이.. 2021. 7. 15.
[그리디 알고리즘4] 백준 1202 보석 도둑 파이썬 우선순위 큐 heapq 백준 1439 보석 도둑 📜 문제 세계적인 도둑 상덕이는 보석점을 털기로 결심했다. 상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다. 상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 🚩 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000) 모든 숫자는 양의 정수이다. 🌞 출력.. 2021. 7. 15.
[그리디 알고리즘3] 백준 1439 뒤집기 파이썬 백준 1439 뒤집기 📜 문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오... 2021. 7. 14.
[그리디 알고리즘2] 백준 1080 행렬 파이썬 백준 1080 행렬 문제 0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오. 행렬을 변환하는 연산은 어떤 3*3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 -> 1, 1 -> 0) 입력 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 만약 A를 B로 바꿀 수 없다면 -1을 출력한다. 여기서 뽀인트는 3*3 크기 단위로 모든 원소를 반대로 뒤집는다는 것 ! 그래서 각각의 배열들을 비교했을 때 전체를 비교할 필요가 없이 3.. 2021. 7. 14.
[ 그리디 알고리즘 1 ] 백준 1774 수 묶기 파이썬 백준 1744번 수 묶기 처음에는 너무 쉽게 풀은 줄 알았으나 생각할수록 예외가 많아지는 문제였다. 실패를 여러번 한 케이스 n = int(input()) plus=[] minus=[] zero=0 for i in range(n): x = int(input()) if x>0: plus.append(x) if x1 and plus[i+1]>1: answer += plus[i]*plus[i+1] used.append(i+1) else: answer += plus[i] used2=[] for i in range(len(minus)): if i in used2: continue elif i==len(minus)-1: if zero>0: answer+= 0 else: answer += minus[i] else: .. 2021. 7. 14.
[Python] 백준 1946번 이해하기 백준 1946번 신입사원 문제 이번 주는 GREEDY 알고리즘을 공부하고 있다. 모르더라도 문제 풀이를 읽으며 이해가 가능했는데 요 문제는 뭔가 문제 자체를 이해하기도 어려웠고 풀이하는 것도 어려웠다. (T_T) 그래서 혹시나 요 문제 이해가 잘 안되는 분들을 위해 풀이를 정리해보고자 한다. 백준 1946번 문제 풀이 문제 풀이 : 헷갈렸던 점은 바로 ! 입력되는 저 숫자들은 성적이 아니고 순위입니다. 이 문제를 풀며 다시 한번 문제를 제대로 잘 읽어야하는 중요성을 느꼈습니다. 그 다음 헷갈리는 것은 신입사원으로 뽑는 기준입니다. 기준은 한 지원자의 서류, 면접 성적이 다른 어떠한 지원자보다 최소 1개라도 높으면 채용이 됩니다. 즉, A의 서류순위, 면접 순위가 B 보다 둘 다 낮으면 A는 100% 떨어.. 2021. 7. 7.
[Python] 탐욕법, Greedy 알고리즘 GREEDY 알고리즘 Greedy 알고리즘이란 ? 현재 상황에서 지금 당장 최선인 것, 좋은 것만을 고르는 알고리즘이다. 또한 탐욕 법이라고도 불립니다. Greedy 알고리즘은 '정당성' 분석이 매우 중요합니다. - 단순히 가장 좋아보이는 것을 반복저긍로 선택해도 최적의 답을 구할 수 있는지 검토가 필요합니다. 일반적인 상황에서 Greedy 그리디 알고리즘은 최적의 해를 보장할 수 없을 때가 많습니다. 왜냐하면 탐욕법은 당장의 좋은 것을 선택하기 때문입니다. 하지만 코딩테스트의 Greedy 문제는 대개 탐욕법으로 얻은 답(해)이 최적의 답이 되는 상황이 주어집니다. 그리디 알고리즘의 대표문제 : 그리디 알고리즘은 대표적으로 k 원의 돈을 건네야할 때 n개의 잔돈 가짓수(500원, 100원, 50원..) .. 2021. 7. 6.
[Python 파이썬] 해시 (Hash) 해싱 (Hashing) 알고리즘 예제로 알아보기 파이썬 코딩테스트에 출제 빈도가 높은 파이썬 '해시' 에 대해 알아보기 해시 / 해싱 / Hash / Hashing - 데이터를 빠르게 넣거나 or 가져올 때 사용하는 기법 : 해시로 풀어야하는 코딩 테스트의 경우 *** (아래 예제 有) -> 리스트로 풀게되면 효율성 테스트 실패 ! - 최솟값 or 최댓값을 찾을 때 (전체 자료를 모두 검색하는 경우) 효율이 떨어짐 - 파이썬의 딕셔너리가 해시 테이블로 구현되어 있음 해시관련 알고리즘을 접한 후에, 해시의 유용함에 대해 알게 되었습니다. 먼저 프로그래머스 level2 의 해시 대표문제 '전화번호 목록' 을 보겠습니다. 먼저 해시를 사용하지않은 코드, 그리고 해시를 사용한 코드의 실행 시간을 비교해 보겠습니다. 파이썬 실행시간 계산 / 측정 방법 http.. 2021. 7. 4.
[프로그래머스] 모의고사 파이썬 python 모의고사 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution .. 2021. 6. 23.
[프로그래머스] python 2016년 2016년 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 abresult 5 24 "TUE" 나의 코드 def solution(a, b): day = ['MON','TUE','WED','THU','FRI','SA.. 2021. 6. 22.
[프로그래머스] 파이썬 문자열 다루기 기본 python 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 입출력 예 sreturn "a234" false "1234" true 실패 1 def solution(s): if len(s)==6 or len(s) ==4: if (s.isdigit() ==True) : return True else: return False 드디어 성공 ! def solution(s): if len(s)==6 or len(s) ==4: if (s.isdigit() ==True) : retur.. 2021. 6. 21.
[프로그래머스 ] 문자열 내 마음대로 정렬하기 / 파이썬 문자열 내 마음대로 정렬하기 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 stringsnret.. 2021. 6. 21.
[프로그래머스] 시저 암호 파이썬 python 시저 암호 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 조건 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 입출력 예 snresult "AB" 1 "BC" "z" 1 "a" "a B z" 4 "e F d" 파이썬 나의 코드 : def solution(s, n): a = 'abcde.. 2021. 6. 20.
[프로그래머스 ] 콜라츠 추측/ while, 재귀함수 파이썬 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 제한 사항 입력된 수, num은 1 이상 8000000 미만인 정수입니다.. 2021. 6. 20.
[프로그래머스] 이상한 문자 만들기(파이썬 오류나는 이유) 프로그래머스 Level 1 이상한 문자 만들기 이상하게 분명 test는 통과하는데 혼자 돌려본 테스트도 다 통과인ㄷ ㅔ !!! 문제 제출만 하면 오류가나서 31%? 정도밖에 점수가 나지 않는다. 아무리 봐도 이상할게 없는데....... 질문하기 섹션에서 뭔가 놓친게 있나 보는데 어떤 분이 split() 으로 쓰면 안되고 split(' ') 으로 써야 한다고 팁을 전수 ! 바로 실행해보니 통과했다.. (°ロ°) 나의 코드 def solution(s): a = s.split(" ") b = '' for i in a: for j in range(len(i)): b += i[j].upper() if j%2==0 else i[j].lower() b += ' ' return b[:-1] 오류가 계속 난 이유 .sp.. 2021. 6. 20.
반응형