본문 바로가기

분류 전체보기

(105)
[프로그래머스]네트워크 #include #include #include #include using namespace std; bool network[201][201]; bool check[201][201]; int solution(int n, vector computers) { int answer = 0; for(int i = 0; i
[프로그래머스]카펫 주어진 red의 가로와 세로를 구한다면 brown의 가로, 세로 길이를 구할 수 있다. red의 길이를 구하기 위해 가능한 가로, 세로의 모든 경우의 수를 store배열에 저장한다. 저장된 store의 배열을 이용해 store에 저장된 가로와 세로의 길이를 이용해 (가로길이 * 2 + (세로길이 + 2) * 2)의 값이 brown이 되면 이 때의 가로, 세로 길이가 답이다. #include #include #include using namespace std; vector solution(int brown, int red) { vector answer(2); int row = 0, col = 1; vector store; for(int idx = 0; idx
[프로그래머스]베스트앨범 map을 이용해 장르별 재생횟수를 측정한다. map에서 측정된 장르별 재생횟수를 이용해 반복문을 작성한다. 매 순회마다 장르의 노래의 최대값의 위치를 구해서 answer에 추가해준다. #include #include #include #include using namespace std; vector solution(vector genres, vector plays) { vector answer; map mainMap; vector store; for(int idx = 0; idx second, it->first }); } sort(mapVal.begin(), mapVal.end(), greater()); for(int idx = 0; idx max2) { if(max2 >= max1) { max1 = st..
[프로그래머스]위장 각 종류마다 옷의 개수를 세고 각각의 종류를 착용하지 않을 경우까지 고려해 +1을 한후 모든 종류의 옷 개수를 곱한다. 여기서 모두 착용하지 않았을 경우를 빼면 답을 구할 수 있다. #include #include #include using namespace std; int solution(vector clothes) { map mainMap; for(int idx = 0; idx second + 1; } answer--; return answer; } Colored by Color Scripter cs
[프로그래머스]구명보트 정렬을 한 후 가장작은 값의 위치(front)와 가장 큰 값의 위치(end)의 값을 더한 값이 limit보다 크다면 한 명밖에 못타기 때문에 end를 한칸 줄여 가장 큰 값을 하나 제거한다. 반대로 limit보다 작다면 두 명이 탈 수 있기에 front++, end--를한다. #include #include #include using namespace std; int solution(vector people, int limit) { int answer = 0; sort(people.begin(), people.end()); int front = 0; int end = people.size() - 1; while(front limit) { end--; answer++; } else if (people[fr..
[프로그래머스]괄호 변환 그냥... 문제에서 말하는대로 그대로 구현하는게 정답 문제를 잘 이해하지는 못했는데 원하는 바를 잘 구현한 거 같다. #include #include #include using namespace std; string translate(string p, int front, int end) { string answer = ""; int open = 0, close = 0; for(int idx = front; idx
[프로그래머스]숫자 야구 완전탐색 문제인 거 같다. 3자리수 전부를 주어진 baseball이랑 비교해서 4중 반복문을 구성했다. 3자리수 전부를 확인해보는데 각각의 수마다 baseball이랑 비교해 strike와 ball의 수를 구한다. 전부 strike와 ball 수가 동일하다면 가능한 답이므로 정답의 수를 하나 추가한다. #include #include using namespace std; int solution(vector baseball) { int answer = 0; for(int idx = 111; idx
[프로그래머스]전화번호 목록 중복을 찾으면 false를 반환하도록했다. 처음에 정렬을 하는 이유는 1234, 123, 12와 같이 앞의 수가 더 길다면 비교할 때 접두어가 다르기 때문이다. #include #include #include #include using namespace std; bool solution(vector phone_book) { sort(phone_book.begin(), phone_book.end()); map mainMap; for (int idx = 0; idx