Language/C
-
열혈 C++ 프로그래밍 (클래스 완성)Language/C 2023. 8. 19. 18:45
//Point.h #ifndef __POINT_H_ #define __POINT_H_ class Point { private: int x; int y; public: bool InitMembers(int xpos, int ypos); int GetX() const; int GetY() const; bool SetX(int xpos); bool SetY(int ypos); }; #endif // !__POINT_H_ //Point.cpp #include #include "Point.h" using namespace std; bool Point::InitMembers(int xpos, int ypos) { if (xpos < 0 || ypos < 0) { cout 100) { cout 100) { cout ..
-
열혈 C++ 프로그래밍 (Chapter01 문제풀이)Language/C 2023. 8. 13. 22:01
//실행 예 1번째 정수 입력 : 1 2번째 정수 입력 : 2 3번째 정수 입력 : 3 4번째 정수 입력 : 4 5번째 정수 입력 : 5 합계 : 15 #include int main(void) { int result = 0; int a; std::cout > a; int b; std::cout > b; int c; std::cout > c; int d; std::cout > d; int e; std::cout > e; result = a + b + c + d + e; std::cout
-
C 재귀호출 (하노이탑)Language/C 2023. 7. 30. 22:57
탑을 다른 탑으로 옮기는 하노이탑이다. 규칙은 제일 위에 있는 원판을 움직여야하며 한번에 한개씩 이동이 가능하고, 크기가 작은 원판은 큰 원판위로 가지 못한다. 옮기는 과정들을 생략하고 전체적으로 봤을때 원판이 n개가 있으면 가장 큰 원판을 제외하고 그 위의 n-1개의 원판을 옮긴 후, 가장 큰 원판을 목적지에 옮기고, 다시 n-1개의 원판을 목적지에 크기순으로 놓으면 된다. 간단한가 하면서도 코드로 짜면서 생각을 하니 좀 어지러웠다. #include void hanoi(int n, char start, char work, char end){ if(n == 1){ printf("%d을 %c에서 %c로 옮김", n, start, end); } else{ hanoi(n-1, start, end, work);..
-
백준 10809번 : 알파벳 찾기Language/C 2021. 6. 10. 19:36
많이 어려웠고 아직까지 해결을 못하였다. 단어를 입력받고 입력받은 단어의 각 알파벳에 대해, 단어에 포함되는 경우 처음 등장하는 index값을 출력하고, 포함되지 않을 경우 -1을 출력하는 문제인데, 필자의 경우 중복된 알파벳이 나올경우 마지막에 등장하는 알파벳의 index값이 출력된다. 일단 여기까지 짠 코드이다. #define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { char S[100]; int a[26]; scanf("%s", S); //-1로 초기화 for (int i = 0; i < 26; i++) { a[i] = -1; } //출력까지 완료 but 중복된 알파벳이 나올경우 마지막 위치의 index값이 출력됨. for (int j..
-
백준 2562번 : 최댓값 (포인터 풀이)Language/C 2021. 6. 10. 17:14
앞서 배열을 사용하여 풀이해 본 적 있는 문제이다. 아주 간단하니 코드를 보고 이해해보자, 모르겠다면 배열로 먼저 코드를 짜 보고 포인터로 바꿔보면 좋다. #include int main(void){ int arr[9]; int* p = arr; int max = 0, maxnum = 0; for (int i = 0; i < 9; i++) { scanf_s("%d", (p + i)); if (max < *(p + i)) { max = *(p + i); maxnum = i+1; } } printf("%d\n", max); printf("%d\n", maxnum); } 문제는 풀었지만 필자가 매일 보면서 이해가 안 돼 궁금한 부분이 있었으니 한번 적어보겠다. 위의 코드에서는 for문 안에 scanf과 if문..
-
5주차 문자열과 문자열 처리함수 과제Language/C 2021. 6. 1. 22:51
단어를 입력하고 입력한 단어에서 사용된 알파벳 + 알파벳의 개수를 출력해주면 된다. 모르겠다. int a~z, A~Z = 0 ; 으로 주고 if문과 for문을 사용해서 입력한 문자열을 하나씩 읽어 해당 알파벳의 수를 1씩 증가 시키는 방법으로 푼다면 물론 쉽겠지만 쓰이지 않은 문장들도 (a = 0 과 같이) 출력이 되고, 당연히 이건 정답은 아니다. 한참을 생각하다가 인터넷이 검색해보았다. "문자열 빈도 수" 라고 검색하니 대충 비슷한 문제가 나왔다. 풀이 방법은 ASCII를 사용해서 문제를 푸는 것이다. 대충 이런 방식이다. ASCII에서는 문자에 해당하는 숫자가 있다. ( a = 97, z = 122, A = 65, Z = 90 과 같이 ) 문자열을 입력받았을때, 문자에 해당하는 숫자를 인덱스로 사용..