본문 바로가기

Algorithm/기타(기업등)

(32)
[EPPER/14회 5번]단어 게임(상-2) 단어와 단어의 첫글자들은 배열(c)/vector(c++)로 주어짐 만족해야하는 조건 1. 미리 주어진 (입력받은) 단어 목록일 것 → 전달받은 단어 배열 내로 정답을 한정함 2. 첫글자가 동일해야할 것 → 리스트를 for문으로 탐색하면서 첫글자가 동일할 떄 까지 비교 3. (2번 조건이 중복될 경우) 최소 횟수로 언급한 것 이어야 할 것 4. (3번 조건까지 중복될 경우) 알파벳 순서로 답할 것 → 언급횟수를 기준으로 정렬 + 언급횟수가 같으면 알파벳순으로 정렬 정렬을 해주면 for문으로 첫글자만 비교해서 첫번째로 같은 것을 정답으로 생각해 줄 수 있음 // 실제 시험에서는 Solution 클래스의 solution 함수를 사용합니다. 이를 감안하여 풀이해주세요. #include #include #incl..
[EPPER/13회 2번]거스름돈 계산(하-4) #include #include using namespace std; vector money = {50000,10000,5000,1000,500,100,50,10,8}; void solution(int m, int n) { // 화폐 종류 개수, 총 화폐 개수 출력 int change; int answer_1=0; int answer_2=0; int result=0; change = m-n; for(int i=0;i
[EPPER/14회 8번]토마토 보관(중-3) // 실제 시험에서는 solution 함수를 사용한다는 점을 감안하고 풀이해주세요. #include #include #include /* 이런 문제가 나오면 태두리에 -1을 넣어서 계산에 용이하게 만든다! 토마토가 모두 익을 수 있는 상황인가? 아닌가(-1) 를 먼저 판단해야함 모두 익을 수 없다 -> -1 => 토마토는 자발적으로 익을 수 x -> 무조건 근접한 곳에 익은 토마토가 존재하는지 확인 isPossible을 이용함 모두 익을수 있다 -> 며칠이나 걸리는지 판단하기 얼마나 걸릴지 모르기 떄문에 while문을 사용하고 while문의 내용은 토마토 배열을 스캔하면서 익은 토마토(1)이 있으면 상/하/좌/우 를 검사해서 이들이 0인경우 check배열에 true로 표시해둔다 스캔을 마쳤으면 check..
[EPPER/15회 7번] 도서관 좌석 예약(중-4) //프로그래머스에서는 main함수 및 입출력문이 필요하지 않습니다. 대신 solution함수만 작성하면 됩니다. #include #include #include /* Greedy Algorithm "종료시간"이 빠른 순서대로 2자리를 아무곳이나 배치 하지만 종료시간이 동일하다면 시작시간이 더 빠른 것을 먼저 배치 sort(T start, T end, Compare comp); sort(정렬 시작,정렬의 끝, 기준함수) start 내림차순 a가 b에 비해 작다 (a 오름차순 */ using namespace std; //시작시간 배열(s) , 끝나는 시간 배열(e)를 세트로 묶은 pair vector vector v; //sort 함수를 사용할 때 기준이 되게 하는 함수 bool compare(paira,..
[EPPER/11회 9번]올바른 괄호 배열 구하기(중-2) #include using namespace std; /* 재귀함수로 계속해서 괄호를 생성해본다 괄호를 그릴때 -> 이 방향으로 그리고 항상 (가 먼저와야 하므로 괄호를 그릴때 "("부터 그리기 떄문에 제한된 갯수 내에서 (는 얼마든지 계속해서 그릴수 있지만, ex. (((( ) 뭐이런건 된다 그뒤에 )를 더그리면되니깐 그런데 )의 갯수는 제한이 된다. (를 막그렸을떈 )로 수습해서 하나의 괄호로 만들수 있지만 ))를 막그린 이상 (를 그려봣자 괄호가 완성안되니깐 ex. ()))))는 안된다 (를 추가해봤자 이미 틀린 괄호니깐 =>결론을 말하면 괄호를 그려나갈 때, "("의 수보다 항상 ")"의 수가 많거나 같아야 한다. 이를 지키면서 괄호를 재귀적으로 그려보면, (이 0개, )이 0개 남으면? -> 종..
[EPPER/13회 7번]회문을 만들기 까지의 횟수(중-1) 재귀를 이용 #include #include using namespace std; /* 배열의 처음과 맨 끝부터 비교해서 같으면 -> 그 다음을 재비교 (재귀) 배열의 처음과 맨 끝부터 비교해서 다르면 -> 둘중 더 작은쪽이 그다음과 더해짐 -> 재비교 */ int answer = 0; int solution(int* arr, int start, int end) { if(start >= end)return answer; else{ if(arr[start]>arr[end]){ //뒤쪽이 더 작음 answer++; arr[end-1] = arr[end] + arr[end-1]; solution(arr,start,end-1); }else if(arr[start]> n; for (i = 0; i < n; i++..
[EPPER/12회 2번] 즐거운OT 방번호만들기(하-3) #include using namespace std; int main() { int room_n;//방 번호 int in_n; //방 안에서의 번호 int num; cin>>num; room_n = num/15 + 1; in_n = num%15; //if(room_n == 0) room_n=1; if(in_n == 0){ in_n=15; room_n--; } cout
[EPPER/11회 7번] 단순계산기(하-2) #include #include using namespace std; //평균을 크게 만드는 방법은 가장 작은 수부터 평균을 구해나가는것 double solution(int num_arr[], int n){ int sol; //오름차순 정렬 sort(num_arr,num_arr+n); double m = num_arr[0]; for(int i=0;i> n; for (int i = 0; i > num_arr[i]; cout

728x90