알고리즘 :: 백준 :: 11655 - ROT13
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악입력: 문자열 S는 소문자, 대문자, 숫자로 이뤄진 ≤ 100이고 띄어쓰기 포함.✏️ 문제풀이소문자 'a'(97)랑 대문자 'A'(65)는 아스키코드 외워두면 편리합니다.띄어쓰기가 포함된 문장 입력이 들어오므로 `getline()` 함수로 입력받습니다.13번째 소문자('m'), 대문자('M')를 기준으로 처리방법이 바뀝니다1~13번째 알파벳(소문자 또는 대문자)라면 그냥 덧셈해주면 됩니다.14~26번째 알파벳이라면 기준 알파벳(m 또는 M)으로부터 몇 칸이나 떨어져있는지 계산한 후 다시 'a'('A')부터 셈해줍니다.📝 코드#include using namespace std;int main() { ios::sync_with_stdio(false), cin..
알고리즘 :: 백준 :: 1159 - 농구 경기
·
Problem Solving
❔문제 🔗문제링크 🔄 문제 및 입출력 조건 파악1 ≤ 선수의 수 ≤ 150각 선수의 성 ≤ 30글자, 소문자로 이뤄짐.성의 '첫 글자'가 같은 선수가 5명이상있다면 해당 첫글자들을 출력없다면 PREDAJA 출력.✏️ 문제풀이중요한 건 입력받은 문자열의 첫 글자입니다.이전 문제(10808 알파벳 개수)에서 다뤘듯이, 소문자에 대응하는 26칸의 카운팅 배열을 만듭니다.각 이름의 첫 글자에 대응하는 배열 값을 증가시킵니다. ( `배열[(첫글자)-'a']++` )카운팅 배열을 순회하며 값이 5 이상이라면 다시 `(인덱스)+'a'`해줘서 소문자로 출력해줍니다.📝 코드#include using namespace std;int main() { ios::sync_with_stdio(false), cin.tie(n..
알고리즘 :: 백준 :: 10988 - 팰린드롬인지 확인하기
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악입력: 길이는 ≤ 100이며 '소문자'로만 이뤄짐.✏️ 문제풀이회문 여부를 판단하는 방법C 방법맨 왼쪽부터 오른쪽 방향으로 향하는 커서맨 오른쪽부터 왼쪽 방향으로 향하는 커서두 커서가 가리키는 문자가 서로 다르거나, 교차할 때까지 진행합니다.무사히 교차했다면 해당 단어는 회문입니다.C++ 방법다른 `std::string`에 단어를 뒤집어서 저장합니다.원본과 뒤집은 복사본을 `=` 연산자로 비교합니다.📝 코드#include using namespace std;int main() { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); string s; cin >> s; string ss(s);..
알고리즘 :: 백준 :: 2979 - 트럭주차
·
Problem Solving
❔문제 🔗문제링크🔄 문제 및 입출력 조건 파악트럭은 총 3개입력1 ≤ 시간 ≤ 100(도착시간) (떠나는시간) 순으로, (도착시간) < (떠나는시간)✏️ 문제풀이시간 `t`일 때, 주차장에 차량이 몇 대있는지 정보를 담고있는 배열 `t`을 만듭니다.`(도착시간) (떠나는시간)`을 입력받았을 때, 배열 `t`는 `t[도착시간]`부터 `t[떠나는시간 - 1]`까지 1 증가합니다.떠나는 시간은 해당 차량이 주차장을 이용하는 시간이 아니므로, 포함해서는 안 됩니다.따라서 요금을 계산할 때 고려해야할 범위는 【도착시간, 떠나는시간) 입니다.요금을 계산할 때 현재 주차장에 있는 차량 수를 놓치면 안 됩니다. (한 대: A원 / 분, 두 대: 2 × B원 / 분, 세 대: 3 × C원 / 분)📝 코드#inclu..
알고리즘 :: 백준 :: 10808 - 알파벳 개수
·
Problem Solving
❔문제  🔗문제링크  🔄 문제 및 입출력 조건 파악입력: '소문자'단어, 길이 ≤ 100✏️ 문제풀이알파벳 소문자는 총 26개이므로 26칸짜리 `int`형 배열을 만듭니다.입력받은 문자열 속 문자를 처음부터 끝까지 하나씩 읽으며 `배열[문자-'a']` 값을 하나씩 증가시키며 카운팅합니다.배열 내 값을 모두 출력하면 정답입니다.📝 코드 #include using namespace std;int main() { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); array alpha = {0, }; string S; cin >> S; for (char c : S) alpha[c - 'a']++; for (int i : alpha) cou..
알고리즘 :: 백준 :: 2309 - 일곱 난쟁이
·
Problem Solving
❔문제  🔗문제링크  🔄 문제 및 입출력 조건 파악입력: 9명 키, 100을 넘지 않음출력: 키 합 100인 7명 조합 아무거나✏️ 문제풀이난쟁이 9명 중 7명을 뽑아 구한 키의 합이 100일 때 출력하는 bruteforce 문제입니다.9명 중 7명을 뽑는 것($_9C_7$)은, 9명 중 2명을 뽑는($_9C_2$) 경우의 수와 같습니다. 총 인원의 키 합에서 100을 뺀 값을 `diff`라 할 때2중 for문을 돌려서 선택한 2명의 키 합이 `diff`면 출력합니다.재귀함수를 돌려서 2명을 선택하고, 키 합이 `diff`면 출력합니다.오름차순으로 출력해야 하기 때문에, 2중 for문을 돌리던, 재귀함수를 돌리던 먼저 정렬부터 하는 것을 잊지 맙시다.📝 코드2중 for문 방법#include usin..