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 |
29 | 30 |
Tags
- flutter #깃
- git #unity #깃허브
- boj #c++
- baekjoon #백준 #boj
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- 비주얼 스튜디오 #vs #visual studio
- boj #baekjoon
- boj #baekjoon #c++
- 백준 #boj #baekjoon
- flutter #todolist
- 플러터 #flutter #restful #rest api
- flutter #git
- 로컬저장소 #이름변경
- VS #비주얼스튜디오
- unity #2d-game #minigame #vscode
- 백준 #boj
- unity #2d-game
- Flutter
- firebase #파이어베이스
- flutter #firebase #플러터 #파이어베이스 #연동
- flutter #플러터
- 백준 #c++
- 비주얼스튜디오 #코드스니펫
- flutter #플러터 #분석
- 백준
- flutter #app #취준
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- baekjoon #boj #c++
- flutter #상태관리
Archives
- Today
- Total
cococo-coding
2789번. 유학 금지 (c++ 풀이) 본문
문제
풀이
1. string으로 문자를 입력받는다.
2. CAMBRIDGE를 넣은 문자열 cam을 생성한다. 그리고 이중for문을 사용하여 입력받은 문자 word와 cam을 비교한다.
만약 word에 CAMBRIDGE 문자가 하나라도 있다면 그 문자는 0으로 대체한다.
3. 다시 for문을 이용하여 word 문자열을 출력한다. 이때 앞에서 겹치는 문자를 0으로 바꾸어놨으므로, 포문을 돌릴 때 0이 아닌 애들만 출력한다.
이게 가장 기본적인 풀이이고, 이를 응용하여 함수로 변경한 코드도 있다.
이 코드는 두 번째 코드로 아래에서 확인할 수 있다.
이때는 CAMBRIDGE에 A,B,C,D,E 까지의 알파벳과 G, I, M, R 알파벳이 들어간다는 점을 착안하여 따로 사용자정의함수를 만들어준다.
그리고 첫번째 코드와 for문을 사용하여 입력받은 문자를 돌리는 것까지는 동일하다.
다만 if 조건문을 쓸때, 이 조건을 함수 int cambridge(char ch)로 빼주는 것이다.
이 함수는 캠브릿지 알파벳을 조건으로 만든 문장을 리턴한다.
main함수에서는 이 함수를 if의 조건문으로 받아서, 만약 함수의 리턴값과 다르면 문자를 출력하고, 리턴값과 동일하면 출력하지 않게 한다.
포인트
1. CAMBRIDGE를 문자열로 생성하여 단어와 비교해주기
2. if문 조건으로 알파벳 하나하나 비교해주기 (-> 함수로 빼주기 가능)
코드
첫번째 코드
#include <iostream>
using namespace std;
/*
1. 단어를 입력받는다.
2. 단어에서 CAMBRIDGE에 포함된 알파벳들을 지운다.
3. 지운 단어를 출력한다.
*/
int main() {
//1
string word;
cin >> word;
//2
string cam = "CAMBRIDGE";
for (int i = 0; i < word.size(); i++) {
for (int j = 0; j < cam.size(); j++) {
if (word[i] == cam[j]) word[i] = 0;
}
}
//3
for (int i = 0; i < word.size(); i++) {
if (word[i] != 0) cout << word[i];
}
return 0;
}
두번째 코드(함수 ver)
#include <iostream>
using namespace std;
/*
1. 단어를 입력받는다.
2. 단어에서 CAMBRIDGE에 포함된 알파벳들을 지운다.
3. 지운 단어를 출력한다.
*/
//캠브릿지 문자와 동일한지 확인하는 함수
int cambridge(char ch) {
return ((ch >= 'A' && ch <= 'E') || ch == 'G' || ch == 'I' || ch == 'M' || ch == 'R');
}
int main() {
//1
string word;
cin >> word;
//2
for (int i = 0; i < word.size(); i++) {
if (!cambridge(word[i])) cout << word[i]; //3
}
return 0;
}
'[BOJ] 코드 모음 > C++_learning 문제집' 카테고리의 다른 글
4504번. 배수 찾기 (c++ 풀이) (1) | 2024.01.13 |
---|---|
10820번. 문자열 분석 (c++ 풀이) (2) | 2024.01.13 |
4470번. 줄번호(c++풀이) - getline(), ignore() 함수 사용법 (0) | 2024.01.11 |
5523번. 경기 결과 (c++풀이) (0) | 2024.01.11 |
10867번. 중복 빼고 정렬하기 (c++풀이) (0) | 2024.01.11 |