PS (Problem Solving)

PS (Problem Solving)/Programmers

[프로그래머스] 완주하지 못한 선수

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - for문으로 확인 및 remove로 삭제해 남은 사람을 return - test case중 정확성 테스트는 모두 통과하였으나 효율성 테스트에서 모두 탈락하였다. - Hash를 사용해야 하는 것을 배우고 코드를 다시 적용하여 제출 및 성공했다. # 효율성 테스트를 통과하지 못한 코드 def solution(participant, completion): for person in comp..

PS (Problem Solving)/Programmers

[프로그래머스] 크레인 인형뽑기 게임 - 자바스크립트, 파이썬

문제https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr설계- bucket을 활용 pythondef solution(board, moves): answer = 0 bucket = [] for move in moves: for i in range(len(board)): if board[i][move-1] > 0: # index는 0부터 시작, 1을 빼준다. bucket.app..

PS (Problem Solving)/Programmers

[프로그래머스] 신규 아이디 추천

문제 https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 단계별 구현력을 요구하는 문제라고 생각했다. 풀이 - 2단계는 아스키 코드를 사용하여 1중 for문으로 제거했다. - 테스트케이스를 절반 이상 틀렸는데 3단계 마침표 중복 치환을 수정하고 통과했다. def solution(new_id): # 1단계 : 모두 소문자 new_id = new_id.lower() # 2단계 : 사용 불가능 문자 제거 arr = list(new_id) for..

PS (Problem Solving)/Programmers

[프로그래머스] 신고 결과 받기 - 파이썬

문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 그런것 없고 그냥 깡 구현하려고 했다. - 나름대로의 로직을 순서대로 정하고 접근했지만, 결국 테스트케이스 중 2개가 시간초과 때문에 통과하지 못했다. # 시간초과로 통과하지 못한 코드 def solution(id_list, report, k): N = len(id_list) answer = [0] * len(id_list) # 편지함 person = [[] for _ in rang..

PS (Problem Solving)/Baekjoon

[백준] 1931. 회의실 배정

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 설계 - 첫번째 조건 : 회의가 빨리 끝날수록 뒤에 회의를 많이 잡을 수 있기 때문에 회의가 빨리 끝나는 시간을 최우선으로 정렬한다. - 두번째 조건 : 회의 시간이 (1, 3), (3, 3)일 경우 먼저 1시에 회의를 먼저 하고 끝내야 3시 회의를 하여 회의를 2번 할 수 있다. 때문에 회의 종료시간이 같을 경우 빨리 시작하는 기준으로 정렬한다. - 위 두가지 조건을 모두 종합했을 때 시작시간 기준 정렬 → 종료시간 기준 정렬을 해야만 우리가 원하는 위 두가지 조건을 만족시킬 수 있다. N = int(in..

PS (Problem Solving)/Baekjoon

[백준] 2110. 공유기 설치

문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 설계 - 보통 이분탐색은 최소한의 횟수로 목표를 찾는 것이다. - 이번 문제는 공유기를 설치할 거리를 이분 탐색으로 결정하여 공유기 사이의 거리가 mid값 이상인 경우 공유기를 설치할 수 있다. - mid값 이상의 간격으로 공유기를 설치했을 때 공유기의 개수가 모자라다면 mid 값을 줄여주고, 설치해야하는 공유기의 개수가 너무 적다면 mid..

PS (Problem Solving)/Baekjoon

[백준] 7576. 토마토

문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 설계 - flood fill - 토마토가 모두 익는 최소 날짜를 구하여야 하기에 DFS도 생각해봤으나 N, M의 수가 너무 커서 불가능 - flood fill을 이용하여 아직 익지 않은 곳에 이전보다 1 큰 숫자를 누적하며 넣어주고 마지막에 max 값을 찾아 소요일을 확인한다. - 생각보다 코드가 길게 나왔다. 다음에는 더 줄이도록 해봐야겠다. from collections ..

PS (Problem Solving)/Baekjoon

[백준] 1654. 랜선 자르기

문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 설계 - 이분탐색 - 처음에는 2중 while문을 이용하여 전선의 개수를 카운트, 시간초과 - cnt += line // mid 를 이용하여 while문 대신 한번에 cnt 계산 - start = 1로 해야 cnt += line // mid 에서 mid가 0이 되지 않는다. # 랜선 자르기 K, N = map(int, input().split()) arr = [i..

PS (Problem Solving)/Baekjoon

[백준] 6236. 용돈 관리

문제 https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 설계 - 이분탐색 - 처음 주머니에 금액을 충전하고 카운트 + 1 - 모자라면 남은 금액을 통장에 집어넣고 K원 인출하는 조건 - answer는 K 가 end에서만 최신화 N, M = map(int, input().split()) arr = [int(input()) for _ in range(N)] start, end = 1, sum(arr) # end : 한번의 충전으로 모두 사용할 수 있는 최..

PS (Problem Solving)/Baekjoon

[백준] 2343. 기타 레슨

문제 https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net 설계 - 이분탐색 - 백준 문제 설명에 띄어쓰기가 헷갈리게 되어있어 문제를 이해하는데 오래 걸렸다. - SumV에 남아있는 것을 하나의 묶음으로 처리하는 것이 Point N, M = map(int, input().split()) arr = list(map(int, input().split())) # start : 블루레이 중 가장 큰값이 최소값이어야 모두 담을 수 있다. start, end = ma..

캐럿노트
'PS (Problem Solving)' 카테고리의 글 목록 (19 Page)