-
C++] 대문자, 소문자 바꿔서 출력하기Algorithm 2024. 11. 21. 16:29반응형
프로그래머스 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/181949
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
제출한 답
#include <iostream> #include <string> using namespace std; int main(void) { string str; cin >> str; for (int i =0; i < str.size(); i++){ if ('A' <= str[i] && str[i] <= 'Z'){ str[i] += 32; } else if ('a' <= str[i] && str[i] <= 'z'){ str[i] -= 32; } } cout << str; return 0; }
자세한 풀이
아스키 코드 표를 이용한 풀이.
대문자(A ~ Z) 값은 65 ~ 90까지소문자(a ~ z) 값은 97 ~ 122까지따라서, 같은 글자의 대문자 ~ 소문자 값의 차이가 32(97 - 65)가 나기 때문에 아래와 같이 연산해주면 된다. 대문자를 소문자로 변환 -> + 32 소문자를 대문자로 변환 -> - 32
소문자로 변환해주는 tolower(str[i]);
대문자로 변환해주는 toupper(str[i]);
함수가 있지만 아스키코드 값을 이용한 풀이가 본질을 다룬다고 생각해서 위와 같이 풀이함.
추가 내용
배열의 길이를 반환하는 size() 함수 이용했는데,
컨테이너 크기(null값 포함)를 반환하는 size()보다는
string 클래스에 종속된 length()를 사용하는게 좋을지도 모르겠지만 ...
시간 복잡도가 size() 는 O(1), length()는 O(N) (N은 문자열 길이) 라고 한다. null이 반환 되어도 크게 상관없는 문제에는 size()를 사용하는 것도 나쁘지 않아 보인다. 스피드가 생명!
더보기참고한 자료
https://coding-factory.tistory.com/678
[C언어/C++] 문자열 대소문자 판별 (isupper, islower) 함수 사용법 & 예제
모든 문자들은 아스키코드값으로 이루어져 있습니다. 숫자는 48 ~ 57까지 대문자는 65 ~ 90까지 소문자는 97 ~ 122번까지로 구성되어 있죠. 이러한 특성을 활용한다면 문자열을 판별하여 해당 문자가
coding-factory.tistory.com
https://prmblogs.tistory.com/39
[ C++ ] size()와 length() 함수 차이점
[ 티스토리 ] 애드센스 하루 100명 방문자수 수익 공개 [ 티스토리 ] 애드센스 하루 100명 방문자수 수익 공개 티스토리 시작하기 2023년 3월부터 기억보다 기록하는 마음으로 공부하면서 배운 내용
prmblogs.tistory.com
https://hoho325.tistory.com/314
c++ string 소문자 대문자 변환 방법 총 정리
c++ string 소문자, 대문자 변환 (raw) 아스키 코드 값을 이용하여 대, 소문자 변환을 할 수 있습니다 대문자 A의 아스키 코드 값은 65, 소문자 아스키 코드 값은 97 입니다 즉 아스키 코드 값의 차이는
hoho325.tistory.com
반응형'Algorithm' 카테고리의 다른 글
C++] 백준 5622번 다이얼 (0) 2024.11.25 C++] 특수 문자 출력하기, Raw 문자열 (0) 2024.11.22