Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
Archives
- Today
- Total
기록
99클럽 코테 스터디 5일차 TIL C++ map : insert, 순회 본문
오늘의 학습 키워드
(1) 문제1 : map
https://www.acmicpc.net/problem/27160
(2) 문제2 : map
https://www.acmicpc.net/problem/29701
공부한 내용 본인의 언어로 정리하기
문제1 : 문자열
(1) map.insert
map은 키-값 쌍을 저장할 수 있는 자료구조로, 여기서는 과일 이름을 키로, 수량을 값으로 사용하고 있습니다.
insert 메서드를 사용하여 초기 과일 이름과 그 수량을 0으로 설정합니다. 예를 들어:
mapFruit.insert({"STRAWBERRY", 0});
또한 C++에서 제공하는 make_pair 함수를 사용할 수 있습니다.
#include <utility>
mapFruit.insert(pair<string, int>("STRAWBERRY", 0));
(2) map 순회
map을 순회할 때는 반복자를 사용하여 begin()에서 end()까지 순회합니다.
각 요소에 접근하기 위해 반복자 it를 사용하고, it->first로 키(과일 이름)에 접근하며, mapFruit[strKey]로 해당 키의 값을 확인할 수 있습니다.
for (auto it = mapFruit.begin(); it != mapFruit.end(); ++it) {
string strKey = it->first;
int cnt = mapFruit[strKey];
}
(3) 전체 풀이
#include <iostream>
#include <map>
using namespace std;
static map<string, int> mapFruit;
int main(int argc, char* argv[]) {
// init map
mapFruit.insert({"STRAWBERRY", 0});
mapFruit.insert({"BANANA", 0});
mapFruit.insert({"LIME", 0});
mapFruit.insert({"PLUM", 0});
//input
int N, X;
string name;
cin >> N;
while (N-->0){
cin >> name >> X;
mapFruit[name]+=X;
}
// cnt == 5
for (auto it = mapFruit.begin(); it != mapFruit.end(); ++it){
string strKey = it->first;
int cnt = mapFruit[strKey];
if (cnt == 5) {
cout << "YES" << endl;
return 0;
}
}
cout << "NO" << endl;
return 0;
}
문제2 : map
(1) 전체 풀이
#include <iostream>
#include <map>
#include <utility>
using namespace std;
static map<string, char> m_map;
void initMap(){
// A-Z
m_map.insert(pair<string, char>(".-", 'A'));
m_map.insert(pair<string, char>("-...", 'B'));
m_map.insert(pair<string, char>("-.-.", 'C'));
m_map.insert(pair<string, char>("-..", 'D'));
m_map.insert(pair<string, char>(".", 'E'));
m_map.insert(pair<string, char>("..-.", 'F'));
m_map.insert(pair<string, char>("--.", 'G'));
m_map.insert(pair<string, char>("....", 'H'));
m_map.insert(pair<string, char>("..", 'I'));
m_map.insert(pair<string, char>(".---", 'J'));
m_map.insert(pair<string, char>("-.-", 'K'));
m_map.insert(pair<string, char>(".-..", 'L'));
m_map.insert(pair<string, char>("--", 'M'));
m_map.insert(pair<string, char>("-.", 'N'));
m_map.insert(pair<string, char>("---", 'O'));
m_map.insert(pair<string, char>(".--.", 'P'));
m_map.insert(pair<string, char>("--.-", 'Q'));
m_map.insert(pair<string, char>(".-.", 'R'));
m_map.insert(pair<string, char>("...", 'S'));
m_map.insert(pair<string, char>("-", 'T'));
m_map.insert(pair<string, char>("..-", 'U'));
m_map.insert(pair<string, char>("...-", 'V'));
m_map.insert(pair<string, char>(".--", 'W'));
m_map.insert(pair<string, char>("-..-", 'X'));
m_map.insert(pair<string, char>("-.--", 'Y'));
m_map.insert(pair<string, char>("--..", 'Z'));
// 0-9
m_map.insert(pair<string, char>("-----", '0'));
m_map.insert(pair<string, char>(".----", '1'));
m_map.insert(pair<string, char>("..---", '2'));
m_map.insert(pair<string, char>("...--", '3'));
m_map.insert(pair<string, char>("....-", '4'));
m_map.insert(pair<string, char>(".....", '5'));
m_map.insert(pair<string, char>("-....", '6'));
m_map.insert(pair<string, char>("--...", '7'));
m_map.insert(pair<string, char>("---..", '8'));
m_map.insert(pair<string, char>("----.", '9'));
// 특수 기호
m_map.insert(pair<string, char>("--..--", ',')); // ,
m_map.insert(pair<string, char>(".-.-.-", '.')); // .
m_map.insert(pair<string, char>("..--..", '?')); // ?
m_map.insert(pair<string, char>("---...", ':')); // :
m_map.insert(pair<string, char>("-....-", '-')); // -
m_map.insert(pair<string, char>(".--.-.", '@')); // @
}
int main()
{
// init data
initMap();
int N;
string strMos, strResult;
cin >> N;
// convert
while (N-->0){
cin >> strMos;
strResult = m_map[strMos];
cout << strResult;
}
cout << endl;
return 0;
}
오늘의 회고
다음은 dfs, bfs 기본적인 알고리즘을 연습해보겠습니다.
'코딩테스트 > cpp' 카테고리의 다른 글
99클럽 코테 스터디 7일차 TIL C++ DFS(완전탐색), 경우의 수 (0) | 2024.11.03 |
---|---|
99클럽 코테 스터디 6일차 TIL C++ vector, getline : 한줄로 입력받기 (0) | 2024.11.03 |
99클럽 코테 스터디 4일차 TIL C++ 문자열 : stoi, replace (0) | 2024.11.01 |
99클럽 코테 스터디 3일차 TIL C++ 문자열 : substr, length, at (0) | 2024.10.31 |
99클럽 코테 스터디 2일차 TIL C++ 이분탐색, 문자열: "333" < "444" 의 비교가 가능 (0) | 2024.10.29 |
Comments