Algorithm/프로그래머스(84)
-
[프로그래머스] Level.2 해시- 전화번호 목록
코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 전화번호에 적힌 번호 중에 다른 한 번호의 접두어인 경우가 있는지를 찾고자 하였다. 접두어로 비교를 하기 떄문에 빠른 비교를 위해 일단 정렬을 했다. string의 substr을 이용해서 문자열을 비교하는 문자열의 길이만큼 잘라내고 find 하여 같은지 비교했다. string::find()string 클래스의 멤버함수로서, str.find("찾는 문자") 로 사용 반환값은 찾는 문자의 첫번째 인덱스값 찾는 문자가 없을 경우는 string::npos를 리턴한다..
2021.01.15 -
[프로그래머스]Level.2 탐욕법(greedy) 구명보트
코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 첫번쨰 풀이-효율성 실패(1번 3번) #include #include #include using namespace std; int solution(vector people, int limit) { int answer = 0; int num=1; sort(people.begin(),people.end()); while(1){ int weight=limit-people.back(); people.pop_back(); if(weight!=0..
2021.01.14 -
[프로그래머스] Level.2 힙(heap)- 더 맵게
코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 첫번째 풀이 -정확성테스트 통과 ,효율성 테스트 실패 #include #include #include using namespace std; int solution(vector scoville, int K) { int answer = 0; int num=0,mix=0; while(1){ sort(scoville.begin(),scoville.end()); if(K
2021.01.14 -
[프로그래머스]Level.2 멀쩡한 사각형
코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr using namespace std; long long gcd(long long a, long long b){ return b>0?gcd(b,a%b):a; } long long solution( int w,int h) { long long answer = 1; long long num=gcd(w,h); long long square=(long long)w*h; answer=square-(w+h-num); return answer; } ..
2021.01.14 -
[프로그래머스]Level.2 스택/큐-다리를 지나는 트럭
코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이 programmers.co.kr 진짜 문제에서 요구한 그대로 그냥 풀었다.. #include #include using namespace std; int solution(int bridge_length, int weight, vector truck_weights) { int answer = 0; pair p; vectorv; int time = 0, now = 0, done = 0, i = 0; int truck = truck_weights.size(); while (1) { ..
2021.01.13 -
[프로그래머스] Level.2 연습문제-124나라의 숫자
코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 이 문제를 풀기위해서는 3진법의 이해가 필요하다 124나라의 숫자 매핑 규칙을 보면 n이 3으로 나눠지는 경우를 제외하고 3진법과 동일하다 따라서 n이 3으로 나눠지는 경우에는 4를 넣어주고 몫을 1 감소시켜주면 된다. #include #include #include using namespace std; string solution(int n) { string answer = ""; string s = ""; while (1) { int num = n % 3; if (num == 0) { s.push_back('4'); n -= 1; } else s.push_back(num+'0'); n = n / 3; if (n == 0) brea..
2021.01.13