백준 2810 | 그리디 | 컵홀더 [파이썬 python]
·
Algorithm/백준
2810번: 컵홀더 첫째 줄에 좌석의 수 N이 주어진다. (1 ≤ N ≤ 50) 둘째 줄에는 좌석의 정보가 주어진다. www.acmicpc.net 코드 n = int(input()) # 좌석 수 seat = input() # 좌석 정보 couple = seat.count('LL') # 커플석의 개수 if couple
프로그래머스 | 2021 KAKAO BLIND RECRUITMENT | 신규 아이디 추천 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(new_id): # 1단계: 소문자로 치환 new_id = new_id.lower() # 2단계: 특수문자 제거 for i in new_id: if i in '~!@#$%^&*()=+[{]}:?,/': new_id = new_id.replace(i, '') # 3단계 ..., ..을 .으로 치환 while '..' in new_id: new_id = new_id.replace('..', '.') # 4단계: 처음 또는 끝에 위치한 . 제거 new_id = new_id.strip('..
프로그래머스 | 2022 KAKAO TECH INTERNSHIP | 성격 유형 검사 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제가 길기 때문에 접근법과 풀이과정에 대한 설명만 남깁니다. 코드 def solution(survey, choices): n1, n2, n3, n4 = {'R':0, 'T':0}, {'C':0, 'F':0}, {'J':0, 'M':0}, {'A':0, 'N':0} for i in range(len(survey)): if survey[i] == 'RT' or survey[i] =='TR': if choices[i] < 4: # 비동의 관련 선택지 n1[survey[i][0]] += 4 - choices[i] ..
프로그래머스 | 달리기 경주 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 시도한 코드 def solution(players, callings): for i in callings: idx = players.index(i) players[idx-1], players[idx] = players[idx], players[idx-1] return players 그냥 swap 하면 쉽게 풀리는 문제 아닌가?라고 덤벼들었다가 시간 초과를 만나게 되었다. calling의 최대 길이가 1,000,000이고, players의 최대 길이가 50,000이기 때문에 idx 하나를 구하기 위해선 1,..
백준 4796 | 그리디 | 캠핑 [파이썬 python]
·
Algorithm/백준
4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 코드 i = 1 while True: l, p, v = map(int, input().split()) if p==0 and l==0 and v==0: # 0, 0, 0이 입력되면 반복문 종료 break camping = (l * (v // p)) + min((v % p), l) # 캠핑장을 사용할 수 있는 최대 일수 print('Case {}:'.format(i), camping) i += 1 쉬운 문제인 줄 알고 달려들었다가 '틀렸습니다!'를 계속 만나게..
백준 2805 | 이진탐색 | 나무 자르기 [파이썬 python]
·
Algorithm/백준
2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 코드 n, m = map(int, input().split()) tree = list(map(int, input().split())) # 이진 탐색을 위한 시작점, 끝점 start = 0 end = max(tree) result = 0 # 최종 절단기 높이 while(start mid: # 절단기보다 주어진 나무가 길면 자른 나머지를 total에 추가 total += i - mid # 이진 탐색 if total < m: #..