코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (116)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (10)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • 밸리데이터
  • 모니터링
  • Hooks #React
  • Immer #ContextAPI
  • 솔라나
  • grafana

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

[C++] 프로그래머스 hash 1- 완주하지 못한 선수 (vector만 이용 / 해시 이용)
[C_C++]코딩테스트 연습/[프로그래머스] level 2

[C++] 프로그래머스 hash 1- 완주하지 못한 선수 (vector만 이용 / 해시 이용)

2021. 6. 14. 21:04
728x90

프로그래머스 문제

vector와 algorithm 헤더를 이용한 풀이

sort를 이용해 참가자와 완주자 배열을 정렬해주면, 같은 이름의 참가자들은 각 배열에서 같은 위치에 위치하게 된다.

(이 때 sort는 algorithm 헤더를 선언해줘야 사용 가능하다.)

만약 완주하지 못한 참가자가 있다면 각 위치에 다른 이름이 위치하게 되므로 return으로 해당 참가자 이름을 돌려주고, 끝까지 다른 위치가 없다면 참가자가 한명 많으므로 마지막 참가자 이름을 돌려준다.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(vector<string> participant, vector<string> completion) {
	sort(participant.begin(), participant.end());
	sort(completion.begin(), completion.end());

	for (int i = 0; i < participant.size(); i++) {
		if (participant[i] != completion[i]) return participant[i];
	}
	return participant.back();
}

int main()
{
	vector<string> part = { "mislav", "stanko", "mislav", "ana" };
	vector<string> cpt = { "stanko", "ana", "mislav" };
	string a;

	a = solution(part, cpt);
	cout << a;

	system("pause");
	return 0;
}

 

채점 결과

 

vector 메소드 정리

https://coding-maggot.tistory.com/12?category=898943 

 

[C++ STL] vector(벡터) 공부

STL : 표준 템플릿 라이브러리; Standard Template Library 사용하려면 #include 가 필요하다. C++에서는 동적 배열 구조를 vector로 구현할 수 있다. vector vec, vector vec처럼 선언해주면 자동으로 배열의 크..

coding-maggot.tistory.com

 


해시를 함께 이용한 풀이

<설명>

해시는 key와 value를 이용하는 방법으로, #include <map> 을 해준 후 사용 가능하다.

map<string, int> 선언 후 완주한 선수 먼저 배열을 돌며 각 완주자 이름(key)의 int(value) 값을 1씩 올려준다.

그리고 참가자 배열을 돌며 각 참가자 이름(key)의 int(value) 값을 1씩 빼준다.

이 때 완주자 count를 올려주지 않았던 참가자는 값이 0에서 시작해 1이 감소하므로 이 경우 해당 문자열을 return으로 주게 한다.

 

#include <iostream>
#include <string>
#include <vector>
#include <map>

string solution(vector<string> participant, vector<string> completion) {
	map<string, int> comp;

	for (string c : completion) {
		comp[c]++;
	}

	for (string p : participant) {
		comp[p]--;
		if (comp[p] < 0) return p;
	}
}

 

'[C_C++]코딩테스트 연습 > [프로그래머스] level 2' 카테고리의 다른 글

[프로그래머스] 프린터 (pair, priority queue) - C++ 스택&큐  (0) 2021.10.18
[프로그래머스] 기능개발 - C++ 스택&큐  (0) 2021.10.17
[C++] 프로그래머스 hash 2 - 위장  (0) 2021.10.17
[C++] 프로그래머스 hash 2 - 전화번호 목록  (0) 2021.10.17
    '[C_C++]코딩테스트 연습/[프로그래머스] level 2' 카테고리의 다른 글
    • [프로그래머스] 프린터 (pair, priority queue) - C++ 스택&큐
    • [프로그래머스] 기능개발 - C++ 스택&큐
    • [C++] 프로그래머스 hash 2 - 위장
    • [C++] 프로그래머스 hash 2 - 전화번호 목록
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바