본문 바로가기

분류 전체보기79

[C++] 백준 2999번: 비밀 이메일 문제 링크 https://www.acmicpc.net/problem/2999 풀이 방법 위 문제는 정인이가 암호화한 문자열을 다시 해독하는 문제이다 따라서 암호화 하는 과정으로 이해하면 안 되고 해독하는 과정으로 이해해야 한다. 아래 예시를 들어보겠다. 만약 R=2, C=3 인 경우 암호화 된 문자열이 koaski라고 할 때 다음과 같이 3x2 배열의 형태로 변경한다. ko as ki 인덱스가 0인 열부터 전부 읽어 나가면 kakosi가 된다. 이 원리를 이용해서 문제를 쉽게 해결할 수 있다. 위 설명과 아래 코드의 주석을 참고해서 해당 문제를 이해하자! 코드 #include using namespace std; const int MAX_N = 105; char arr[MAX_N][MAX_N]; int .. 2024. 2. 4.
[C++] 백준 1969번: DNA 문제 링크 https://www.acmicpc.net/problem/1969 풀이 방법 DNA s1, s2, ..., sn가 주어져 있을 때 Hamming Distance의 합이 가장 작은 DNA s를 구해야 한다. 해당 문제의 핵심 Key Point는 입력된 문자열 s1,s2, ...., sn 똑같은 위치에 존재하는 알파벳 중 가장 많은 알파벳을 사전 순서대로 넣으면 해당 문자열 s를 구할 수 있다. 아래 예시를 참고하면 이해가 될 것이다. TATGATAC TAAGCTAC AAAGATCC TGAGATAC TAAGATGT 위 문자열에서 첫 번째 위치로 설명을 하면 T가 4개, A가 1개 이므로 T를 선택하면 된다. 이런 식으로 각 위치 별로 가장 많이 존재하는 알파벳을 하나 선택하면 TAAGATAC가 선.. 2024. 2. 4.
[C++] 백준 2870번: 수학숙제 문제 링크 https://www.acmicpc.net/problem/2870 풀이 방법 해당 문제를 푸는데 꽤 시간이 소모되었다. 이 문제를 해결하는데 가장 중요한 Key Points는 네 가지다. 우선 문자열 시작부터 탐색하여 숫자로만 이루어진 문자열을 추출한다. 추출한 해당 문자열이 모두 0으로 이루어져 있으면 "0"하나만 vector에 담는다 0으로 시작하는 숫자는 모두 무시하고 0 이후 시작되는 숫자부터 문자열을 다시 추출하여 vector에 담는다. 숫자를 int, long long 형으로 담으면 Over Flow가 발생할 수 있으니 문자열 그대로 비교 함수를 만들어서 숫자를 오름차순 정렬한다. 위 설명과 아래 코드의 주석을 참고해서 해당 문제를 이해하자! 코드 #include using name.. 2024. 2. 4.
[C++] 백준 3613번: Java vs C++ 문제링크 https://www.acmicpc.net/problem/3613 풀이방법 해당 문제는 다양한 조건을 전부 고려해야 한다는 부분에서 어려운 문제라고 생각한다. 하나라도 놓치면 해당 문제를 맞출 수 없기 때문에 다음과 같은 조건을 잘 고려해야 한다. 맨 뒤 문자가 '_' 이면 (Error!) 맨 앞 문자가 '_' 이면 (Error!) '_' 연속 두개 존재하면 (Error!) 맨 앞 문자가 대문자면 에러 (Error!) 대문자와 '_'가 각각 1개 이상 동시에 존재하면 (Error!) 그 외에 문제에서 정해진 조건인 영어 알파벳과 밑줄('_')로만 이루어져 있는 경우는 정상이라고 볼 수 있다. 아래 코드의 주석을 참고해서 해당 문제를 이해하자! 코드 #include using namespace s.. 2024. 2. 4.