python 16236 아기상어
·
코딩테스트/백준
문제 분석게임판: N x N 크기의 공간에서 아기 상어(크기 2)가 이동하면서 물고기를 잡아먹음.이동 규칙:상어는 자신의 크기보다 작은 물고기만 먹을 수 있음.이동 시 거리가 가장 가까운 물고기를 먹음 (BFS 사용).같은 거리에 여러 물고기가 있으면 가장 위쪽 → 가장 왼쪽 우선순위.물고기를 먹을 때마다 크기와 먹은 횟수를 체크하여, 크기만큼 먹으면 크기가 1 증가.결과: 아기 상어가 더 이상 먹을 물고기가 없을 때까지 걸리는 총 시간을 출력.풀이 방법BFS 탐색을 사용하여 가장 가까운 물고기 찾기.찾은 물고기를 먹고, 상어의 크기 및 먹은 횟수 갱신.더 이상 먹을 물고기가 없을 때까지 반복. import sysfrom collections import dequeinput = sys.stdin.read..
그리디 알고리즘(1이 될 때까지)
·
코딩테스트/알고리즘
그리디 알고리즘 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법-> 단순히 가장 좋아 보이는 것을 선택해도 최적의 해를 구할 수 있는지 검토해야 함 문제를 풀기위한 최소한의 아이디어를 떠올리고 이를 코드로 작성할 수 있는지를 확인 예시 문제어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 합니다. 단, 두번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있습니다.1. N에서 1을 뺍니다.2. N을 K로 나눕니다.예를 들어 N이 17, K가 4라고 가정합시다. 이때 1번의 과정을 한 번 수행하면 N은 16이 됩니다. 이후 2번의 과정을 두 번 수행하면 N은 1이 됩니다. 결과적으로 이 경우 전체 과정을 실행한 횟수는 3이 됩니다. 이는 N을 1로 만드는 최소 ..
[프로그래머스] lv.2 숫자 카드 나누기 python
·
코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 철수가 가진 카드들을 모두 나누면서, 영희가 가진 모든 숫자카드를 나눌 수 없는 숫자 영희가 가진 카드들을 모두 나누면서, 철수가 가진 모든 숫자카드를 나눌 수 없는 숫자 이 두가지 조건 중 하나라도 만족하는 숫자를 골라 return 한다. 만약 없다면 0을 return한다. 제한 사항 1 ≤ arrayA의 길이 = arrayB의 길이 ≤ 500,000 1 ≤ arrayA의 원소, a..
[프로그래머스] lv.1 기사단원의 무기 python
·
코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 number까지 숫자들의 약수를 구하고, 만약 약수의 개수가 limit보다 크다면 power로 대치해서 result를 구하면된다. 제한 사항 1 ≤ number ≤ 100,000 2 ≤ limit ≤ 100 1 ≤ power ≤ limit 문제 풀이 number의 수가 10**5인것을 간과해선 안된다.. 약수를 구하는데, 어떻게 구해야할까 엄청 고민했는데, 제한에 루트를 씌워 시간을 ..
[프로그래머스] lv.2 숫자 변환하기 python
·
코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from collections import Counter def solution(k, tangerine): tan_sum=[] for i in range(len(tangerine)): sum=0 for j in range(len(tangerine)): if tangerine[j] == i: sum+=1 tan_sum.append(sum) print(tan_sum) tanger_cnt=Cou..
[프로그래머스] lv.2 테이블 해시 함수 python
·
코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(data, col, row_begin, row_end): answer = 0 rxor=0 data=sorted(data, key = lambda data: (data[col-1], -data[0])) # print(data) for i in range(row_begin,row_end+1,1): rsum=0 for j in range(len(data[i-1])): rsum ..
[프로그래머스] lv.1 크기가 작은 부분문자열 python
·
코딩테스트/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요. 예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나..
[백준] 10989번 java
·
코딩테스트/백준
문제 풀이 제한시간 안에 푸는게 요점이었다. collections.sort()는 사용하지 못하고 Arrays.sort()나 Counting sort()를 사용한다. Arrays.sort()를 이용한 코드이다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBui..