본문 바로가기

Algorithm/BOJ

(17)
2903 - 중앙이동알고리즘 새해맞이 1일 1백준 도전! https://www.acmicpc.net/problem/2903  접근법처음엔 수학으로 일반항 구해서 하려다가.. 왜 이 단순한게 안 되지..? 해서 조금 당황했다.그러다가 아.. 얘는 컴퓨터잖아.. 내 머리로 계산하지말고 일을 시켜보자! 해서 풀었다. 잘한 포인트1. 변수 이름 짓기: 옛날에는 대충했는데(ex, 답이면 그냥 answer로 품), 의미 알아 볼 수 있도록 변수이름 나름 한 번 생각해서 지어봄. 최대한 깔끔하게 적어보려고 함(일단, 굳이 성능은 고려하지 않고.. 변수 하나 더 추가한다고 엄청나게 달라지지 않잖아??ㅎ) todo1. 시간복잡도, 용량 고려하는 법 다시 알아보기2. sqrt() 랑 그냥 n*n 이랑 어떤 차이가 있는지 알아보기3. js로 풀어야하는..
[백준/1157/c++] 단어 공부 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 보자마자 쌩 하드코딩으로 광기를 뿜뿜했다 #include #include using namespace std; int main(){ string input; cin >> input; int alphabets[26] = {0}; int pass = 0; for(int i=0; i
[백준/10988/c++] 팰린드롬인지 확인하기 https://www.acmicpc.net/problem/10988 c++에서 배열의 길이를 구할 때 사용할 수 있는 함수가 두 가지가 있지요. 그 차이점을 알아봅시다! string.length() -> 시간복잡도 O(n) string.size() -> 시간복잡도 O(1) => 결론 : string.size()를 씁시다 여러분~~ ;) 추가) 갑자기 헷갈려가지구..홀홀 / : 몫 구하는 연산자 -> but. 피연산자의 자료형(정수형, 실수형)에 따라 몫이 될 수도, 수학적 나눗셈이 될 수도 있음 % : 나머지 구하는 연산자 #include #include using namespace std; int main(){ string word; cin >> word; int count = 0; int length..
[백준/11718/c++] 그대로 출력하기 https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 여태까지는 입력값이 공백으로 구분됐기 때문에 std::cin을 사용했는데 여기서는 공백 포함하여 한 줄 전체를 입력받아야 하기 때문에 getline(cin, 문자열)을 이용했다. #include #include using namespace std; int main(){ int testcase = 100; while(testcase > 0){ string input; // 공백 포..
[백준/2908/c++] 상수 https://www.acmicpc.net/problem/2908 이쯤 되니 문자열 관련 메소드를 정리하고 싶어졌다. 내가 궁금했던 것은 string 클래스에 reverse 기능을 하는 내장함수가 있을까? 였는데,,, 답은 없다. 그러면 c++에서 string을 reverse 하고 싶으면 어떻게 해야할까? gpt씨한테 물어보니까 C++ 표준 라이브러리에 'std::reverse()' 함수가 있단다! 헤더파일에 들어있단다! reverse(뒤집을 문자열의 시작 위치, 뒤집을 문자열의 끝 위치); 이렇게 사용하면 된다! 틀렸던 부분 정리 str.front() : 문자열의 맨 앞 '문자'를 반환 str.back() : 문자열의 맨 뒤 '문자'를 반환 str.begin() : 문자열의 시작을 가리키는 '반복자(i..
[백준/10809/c++] 알파벳 찾기 https://www.acmicpc.net/problem/10809 문자열에서 특정 문자/문자열 을 찾는 메소드는 string::find() 로써 문자열.find("찾는 문자/문자열") 리턴값은 찾았을 때 찾은 문자의 첫번째 인덱스 값 못 찾았을 때 string::npos 값을 반환!!! ** 주의 : -1 아님 문제에서 없으면 -1 출력하길래 그냥 문자열.find("알파벳") 이렇게 하면 알아서 되겠거니 했는데 찾아보니 c++ 에서는 string::npos 값이 출력된단다 지난번에도 그렇고 뭔가 틀리거나 exit이나 예외는 당연히 -1로 생각하는 경향이 있는 것 같다. 허허 #include #include using namespace std; int main(){ string alpahbet = "ab..
[백준/11720/c++] 숫자의 합 https://www.acmicpc.net/problem/11720 단계별로 풀어보기 >> 문자열 파트에 도달했다 c++ 표준 라이브러리에서 제공하는 string 클래스를 요리조리 사용해보는 시간~ 오늘 새롭게 알게된 점은 무엇인가!? string str = "HELLO" // str의 데이터 타입은 string이고 // str[0]의 데이터 타입은 char이다 공백 없이 입력받은 모든 숫자를 합하는 이번 문제에서 나의 로직은 이렇다 입력을 string으로 받고 string.size()만큼 반복문 돌려가지고 각각의 index로 접근해서 int로 변환시켜서 더해주자~ 인터넷에 검색해보니 string to int 하려면 stoi(string 변수명) 요런 함수를 써야한다고 한다. 근디 string str[i..
[백준/5597/c++] 과제 안 내신 분..? https://www.acmicpc.net/problem/5597 단계별로 풀어보기 격파 중ㅎ 배열[Array] 정적 배열 동적(할당) 배열 정의 크기가 미리 정해짐 크기가 미리 정해지지 않음 선언 데이터타입 배열이름[배열크기]; ex. int num[10]; new 키워드 사용 std::vector 사용 초기화 ex. int num[10] = {0, }; bool arr[3] = {true, true, false}; ex. num[0] = 1; arr[2] = true; new 키워드를 사용하면 개별 객체 또는 배열을 동적으로 할당하여 '직접' 메모리를 관리해..