Baekjoon/문자열
[2757] 엑셀(C++)
문제 바로가기 엑셀의 첫 번째 열은 A이고, 두 번째 열은 B이고, 26번째 열은 Z이다. 26번째 열 다음 열부터는 2글자를 이용한다. 예를 들어, 27번째 열은 AA이고, 28번째 열은 AB, 52번째 열은 AZ이다. 그 다음 53번째 열은 BA이며, 이와 같이 계속 열의 이름을 붙인다. ZZ열 다음 열은 AAA가 되고, 그 다음은 AAB가 된다. 엑셀에서 행은 그냥 행 번호를 사용하면 된다. 엑셀 스프레드시트에서 각 칸은 위에서 설명한 열과 행을 합쳐서 이름을 만들 수 있다. 가장 왼쪽 위에 있는 칸은 A1이 되고, 55열 23행에 있는 칸은 BC23이 된다. 열과 행이 주어졌을 때, 그 칸의 엑셀 스프레드시트 상에서 이름을 출력하는 프로그램을 작성하시오. 입력 입력은 여러 줄이며, RnCm형태이다..
[20291] 파일 정리
🌿 문제 [20291] 파일 정리 🌿 해결 방법 이 문제의 핵심은 파일 이름은 필요없고 오로지 '.' 뒤의 확장자만 필요하다는 것. 그래서 입력을 받을 때부터 전체 파일명을 전체 저장할 필요없이 확장자만 저장하면 된다. string 으로 파일명을 입력받으면 확장자를 한번에 빠르게 구할 수 있는데, 먼저 find 함수를 사용해서 '.'이 몇번째 인덱스에 있는지 찾는다. s.find(".") 그 다음 substr 함수를 사용해서 '.' 이후의 문자열을 한번에 구한다. s.substr(s.find(".")+1) 이렇게 확장자를 구했으면 map에다가 차례대로 저장해주면 된다. map은 key값을 기준으로 자동 정렬이 되어있는데 그걸 깜빡하고 벡터를 추가한뒤에 또 정렬을 하느라 시간, 메모리 모두 엄청나게 나왔었..
[17413] 단어 뒤집기2
🌿 문제 [17413] 단어 뒤집기2 🌿 해결 방법 경우는 크게 3가지로 나누어서 보면 된다. ''를 만날 때까지 나오는 모든 소문자, 공백, 숫자를 그대로 출력한다. 두번째 경우는 단어 하나가 끝났다는 뜻이기 때문에 스택을 점검하고 비어있지 않다면 모두 출력해준다. 세번째 경우는 그냥 스택에 바로 추가한다. 마지막으로 스택이 비어있는지 다시 한번 확인한 후, 남아있는 문자가 있다면 출력해준다.(마지막 단어) 한 가지 주의할 부분은 입력 문자 s에 공백이 있을 수 있기 때문에 getline을 통해 반드시 공백을 포함해서 입력받아야 한다. 🌿 내 코드 // [17413] 단어 뒤집기2 // 구현, 문자열, 스택 #include #include using namespace std; stack wordStac..
[1157] 단어 공부
https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net alpha 배열을 초기화해줘야 한다는 것은 생각도 못하고 엄한 것만 고치다가 오답률만 더 늘어버렸다. ㅎㅎ 항상 변수 선언하면 초기화부터 하고 사용하자... 한 가지 주의해야 할 점❗️ 문자를 알파벳으로 출력하고 싶은 경우 printf 함수를 쓰면 "%c"로 출력만 해주면 되지만 cout으로 출력하는 경우에는 출력문에서 타입 변환을 할 수 없기 때문에 사전에 원하는 타입으로 선언한 변수에 값을 저장해서 형 변환을 해준 뒤에 출력해..
[11720] 숫자의 합(C / C++)
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 🧩 내 코드 Ver.1(C) // [11720] 숫자의 합 // https://www.acmicpc.net/problem/11720 #include int main(void) { int n, sum = 0; char arr[101]; scanf("%d", &n); scanf("%s", arr); for (int i = 0; i < n; i++) { sum += arr[i] - '0'; } printf("%d", sum); } Ver.2(C++) // [11720] 숫자의 합 //..
[8958] OX퀴즈
🍃 문제 8958번: OX퀴즈 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 � www.acmicpc.net 🍃 해결 방법 1. testcase의 범위가 주어져 있지 않으므로 각 testcase 마다 string으로 한 줄씩 입력받는다. 2. 한 줄씩 입력받을 때마다 점수를 계산해주는 run 함수를 호출 3. 'O'인 경우 O가 나온 개수인 cnt를 1만큼 증가시키고, 이 값을 sum에 더해준다. 4. 'X'가 나온 경우 O의 개수는 처음부터 다시 세주어야 하므로 cnt를 0으로 초기화시킨다. 🍃 내 코드(C++) // [8958] OX..
[1032] 명령 프롬프트
https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 �� www.acmicpc.net 💡 내 코드(C++) // [1032] 명령 프롬프트 // https://www.acmicpc.net/problem/1032 #include #include using namespace std; int n; // number of files(n > n; temp = n; while (temp--) { cin >> fileName[temp]; } if (n == 1) cout
[2675] 문자열 반복
https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 www.acmicpc.net 💡내 코드 Ver.1 (C) // [2675] 문자열 반복 // https://www.acmicpc.net/problem/2675 #i..