c++95 배열의 차원을 구하는 방법 C++ [ 강화버전 ] https://mawile.tistory.com/207 배열의 차원을 구하는 방법 C++ (강화버전) 안녕하세요!! 이번에는 저번에 배열의 차원의 찻수를 구하는 방법에 관하여 포스팅했습니다. 몇시간 더 삽질하면서, "벡터에 클래스가 들어와도 정상적으로 작동시킬수 없을까?"라는 생각이 들 mawile.tistory.com 우리는 흔히 배열의 크기를 구하고는 합니다. 예를들어서 이런식으로 말이죠.. int main() { int arr[5]; int size = sizeof(arr) / sizeof(arr[0]); } 하지만 ... 만약 아래 코드와 같은 5차원 배열이 존재할때, 이 배열의 찻수인 "5"를 프로그램에게 알리려면... 즉, n차원 배열이 있다고할때, 프로그램에게 그 n차원 배열.. 2021. 10. 11. Softmax function 구현하기 C++ 머신러닝에서 어떠한 여러개의 값이 주어졌을때, 그 여러개의 값중에서 임의의로 고른값을 확률의 수치로써 사용하기위해서 고안된 함수입니다. 예를들어서, 다음과 같은 배열이 있다고할때... [ 2, 3, 5 ] 만약 여기서 "2"를 고를때 전체 배열의 합에서의 확률(차지하는 빈도)의 수치는 몇인가? 에 대한 답을 제시해주는것이 "Softmax function"입니다. 우선 소프트맥스함수는 아래와 같이 생겼습니다. 흠.. 의외로 엄청 심플하게 생겼습니다. 실제 C++코드로 옮기면 다음과 같습니다. #include #include #include // https://www.HostMath.com/Show.aspx?Code=f(sj)%20%3D%20%5Cfrac%7Be%5E%7Bsj%7D%7D%7B%5Csum_%7.. 2021. 10. 11. 행렬곱셈 이론및 실습 c++ 본 포스팅은 행렬곱셈(Matrix Multiplication)에 관한 이론및 c++기반의 실습내용을 포함하고 있습니다. 또한 개인적인 공부차원에서 작성한 글입니다. 참조및 도움 https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EA%B3%B1%EC%85%88 행렬 곱셈 - 위키백과, 우리 모두의 백과사전 행렬 곱셈을 위해선 첫째 행렬의 열 갯수와 둘째 행렬의 행 갯수가 동일해야한다. 곱셈의 결과 새롭게 만들어진 행렬은 첫째 행렬의 행 갯수와 둘째 행렬의 열 갯수를 가진다. 행렬 곱셈(matrix mul ko.wikipedia.org http://mathurl.com/ mathURL mathurl.com 행렬 곱셈이란? 두 개의 행렬에서 한 개의 행렬을 만들어내는 이.. 2021. 10. 9. 이벤트 제어 c/c++ 다중 스레드환경에서 가끔 코루틴처럼 특정이벤트가 발생해야만 함수가 실행되는방법에 관하여 찾고계신가요..? velog에다가 다중스레드 환경에서 이벤트를 제어하는 여러가지 방법에 관하여 포스팅해놓았습니다. 참고해두셨으면 좋겠습니다. https://velog.io/@dpmawile/EventHandling 이벤트 제어 c/c++ 다중스레드환경에서 이벤트제어에 관한 여러가지 방법입니다. velog.io 2021. 9. 10. 삼각형 내부에 존재하는지 점인지 확인하는법 c++ 이번에는 삼각형을 이루는 세개의 꼭짓점을 통해서, 어느 한 꼭짓점 N이 해당 삼각형 내부에 존재하는지 확인하는 알고리즘입니다. 코드는 최대한 가독성을 높여서 만들었습니다. #include struct Coord { int x, y; }; void initialize() { std::cin.tie(0); std::cout.tie(0); std::ios_base::sync_with_stdio(0); } int calcTriangle(Coord A_TRIANGLE, Coord B_TRIANGLE, Coord C_TRIANGLE) { int result = std::abs((A_TRIANGLE.x * (B_TRIANGLE.y - C_TRIANGLE.y)) + (B_TRIANGLE.x * (C_TRIANGLE.y.. 2021. 8. 20. 소수점 반올림하는법 c++ 예를들어서, "0.00457"라는 수를 0.00460으로 반올림하고싶다. 그러면은 c++에서는 어떻게 해야할까..? 답은 간단하다. #include int main() { float fl = 0.00457f; std::cout 2021. 8. 14. 제곱, 제곱근 구현하기 우선은 제곱근은 바빌론방법을 사용하였고, 제곱은 dp를 사용했습니다. 사실 제곱을 일반적으로 구현하면, 시간복잡도가 O(n)이 되는데, 저가 사용한 방법은 dp입니다. 시간복잡도는 예를들어서, 처음 2의 2제곱을 하면 O(n)이고, 그다음은 2의 e제곱을 하면 시간복잡도는 O(n-e)가 됩니다. 그리고, 이미 제곱했었던 수라면 시간복잡도는 O(1)입니다. 먼저 바빌론방법을 이용한 제곱근을 구하는 함수입니다. #include double squareRoot(double n){ double x = n; double y = 1; double e = 0.000001; while(x - y > e){ x = (x + y) / 2; y = n / x; } return x; } int main() { std::cou.. 2021. 8. 13. 최단거리 경로탐색 프로그램 다운로드및 설명 velog에다가 벨만-포드 알고리즘을 이용한 단방향 그래프 최단거리 경로탐색 프로그램에 대한 글올렸습니다. C# winform으로 만들어서 프로그램도 공유중입니다! https://velog.io/@dpmawile/bellmanford-pathfinding 최소비용 경로탐색 : 알고리즘 노트 벨만-포드 알고리즘을 이용한 최단비용 경로탐색 알고리즘에 대한 개인적인 알고리즘노트입니다. velog.io 2021. 8. 5. 나눗셈 연산속도 최적화 C++ 개발환경 >> Devcpp 언어 >> C++17이상 운영체제 >> Windows10 home 💉개요 안녕하세요! 이번에는 나눗셈연산을 비트연산으로 바꾸는 방법들에 대하여 알아보겠습니다. 우선 왜 나눗셈연산을 비트연산으로 바꾸는건가? 나눗셈연산은 곱셈, 덧셈, 뺄셈, 비트연산속도보다 매우느립니다. 만약에 프로그램속도를 최적화하기 위해서는 비트연산으로 바꿔야합니다. 그래서 이번에는 비트연산으로 바꾸는 여러가지 방법에 대하여 알아보겠습니다. 💉참조 https://stackoverflow.com/questions/5558492/divide-by-10-using-bit-shifts Divide by 10 using bit shifts? Is it possible to divide an unsigned intege.. 2021. 8. 2. 계산기 만들기 c++ 계산기 만들기에 대한 내용, 벨로그에 포스팅했습니다. 티스토리 접은건아닙니다!! 벨로그가 뭔가 디자인이 깔끔해서 포스팅할맛나긴하네요! :D https://velog.io/@dpmawile/calculator 계산기 만들기 c++ 계산기 만들기 velog.io 2021. 7. 13. 17412 도시 왕복하기 1 [ 깔끔한 알고리즘 문제풀이 ] 문제 한번에 맞아서 기분좋은나머지 글써봅니다. 문제 풀러가기 17412번: 도시 왕복하기 1 첫째 줄에 두 정수 N(3 ≤ N ≤ 400), P(1 ≤ P ≤ 10,000)이 주어진다. 다음 P개의 줄에는 각 길이 연결하는 출발 도시와 도착 도시의 번호가 주어지며, 두 번호는 다르다. www.acmicpc.net 문제 난이도 플래티넘 IV 문제 유형 네트워크 유량 해법 이 문제는 난이도에 비해서 문제유형이 뭔지만 알면, 쉽게 풀리는문제입니다. 문제에서 범위가 1번도시부터 N번도시까지라고했지만, 어쨌든 우리가 최종적으로 원하는 최대유량및 결과값은 1번도시부터 2번도시로 가는 최대유량을 구해야합니다. 따라서 시작점을 1로하고 끝점을 2로 설정한다음 네트워크유량 알고리즘 돌려주면 됩니다. 그리고 정점들간의 드.. 2021. 7. 7. 윈도우 콘솔디버깅 ( C++ / 20 ) 개발환경 >> Visual Studio 2022 Preview 언어 >> C++20에서 정상작동확인 운영체제 >> Windows10 home 안녕하세요!! 혹시 윈도우 애플리케이션 개발해보신분들중에서, 도중에 변수값을 확인하고싶은데 확인하는부분을 따로 만들기 귀찮으신분계신가요?? 윈도우 애플리케이션개발을 하다보면, 콘솔과는다르게 문자열값이 아닌값을 확인하려면 귀찮게 그부분도 따로 구현했어야됩니다.. 이번에는 윈도우 애플리케이션환경에서 콘솔환경에서의 디버깅을 쉽게 하도록하는 라이브러리를 만들었습니다. 솔직히 디버깅이라는거는 그냥 부주제로 써본것이고, 윈도우애플레케이션환경에서도 콘솔에다가 c++ 스탠다드 라이브러리인 iostream에 포함된 std::cout을 마음껏 사용할수있는 라이브러리를 만들어왔습니다... 2021. 7. 4. 가변인자 프린트함수 ( c++23 ) 개발환경 >> Devcpp 언어 >> C++23 운영체제 >> Windows10 home 안녕하세요! 이번에 c++에서 새로나온 문법 concept아시나요?? 이번에 이것에 대해서 공부해보기위해서 만들어본 카테고리입니다. 그것과 동시에 SFINAE도 동시에 병행해서 공부해보려합니다. 그러면 오늘은 이를 이용한 가변인자 프린트함수 만들기 참고자료를 통해서 바로 공부시작해보겠습니다! 우선은 concept에 대한 기본적인 문법은 알고있으시다는 전제하에 진행하겠습니다. 소스코드 #include #include template concept IsAnyOf = (std::same_as || ...); template concept IsPrintable = std::integral || std::floating_po.. 2021. 6. 23. Devcpp에서 c++23 사용하기 Devcppで c++23を 使用する Using c++23 with Devcpp 안녕하세요!! devcpp에서 c++23을 사용하는방법을 알려드리겠습니다. 우선은 이방법으로 2020년도에 정식으로출시된 c++20또한 사용가능합니다! 바로가시죠! gcc 다운로드 https://winlibs.com/ WinLibs - GCC+MinGW-w64 compiler for Windows WinLibs standalone build of GCC and MinGW-w64 for Windows Jump to: Download | How to use from Windows Command Prompt | How to use from Code::Blocks | Philosophy What is it? In short: it's a free C and C++ compiler for Microsoft Win.. 2021. 6. 20. 네트워크 유량 알고리즘 Network flow [ C++20 / Algorithm ] 개발환경 >> Visual Studio 2022 언어 >> C++20 운영체제 >> Windows10 [ 참고자료 ] 안녕하세요!!! 이번에는 네트워크 유량에 관한 알고리즘을 객체화해보았습니다.' 바로 시작하겠습니다! [ 네트워크유량 알고리즘 network flow algorithm ] 우선은 네트워크유량 알고리즘이란? 각각의 변(edge)에 정해진 용량(capacity)보다 작은 흐름(flow)이 주어진 방향 그래프 라고 합니다!! 다음과 같은 그래프가있을때..! 'A'에서 'H'로 가는데 최대한으로 보낼수있는 유량은 몇일까요? (그림에서 빠뜨렸는데, B -> C로 가는 용량은 4입니다.) 다음에서 나와있는 숫자는 그 간선으로 데이터를 보낼수있는 총 용량 이며, 용량이상으로는 유량의 데이터를 보내지못합.. 2021. 6. 19. 문자열 자르기 < c++20 / concept / requires > 개발환경 >> Visual Studio 2022 언어 >> C++20 운영체제 >> Windows10 안녕하세요!!!!! 이번에는 간단하게 어떠한 문자열객체를 받았을때 그 문자열객체를 특정조건에 따라 쪼개버리는 함수를 만들어보겠습니다!! 최근에 C++20에 새로나온 문법인 concept와 requires를 이용해서 연습하다가 만들어본거에요!! #include //std::cout #include //std::vector #include //std::string #include //SFINAE template//std::string관련 객체만 받는 템플릿 concept StringType = requires(OnlyBeString _OnlyBeString) { { _OnlyBeString } -> std:.. 2021. 6. 19. 드래곤알고리즘 <v1.0.0> C++ 라이브러리 배포 개발환경 >> Visual Studio 언어 >> C++17이상 운영체제 >> Windows10 안녕하세요!! 이번에는 여러가지 알고리즘을 앞으로 천천히 하나씩 넣어볼 라이브러리입니다~! 말그대로 여러가지 알고리즘이 들어가있는 c++17이상의 라이브러리입니다. 현재 추가해 놓은 알고리즘은 다익스트라 알고리즘(Dijkstra), 크루스칼 알고리즘(Kruskal)이 들어있습니다. 추후에 알고리즘은 천천히 하나씩 추가해나가겠습니다. 본 라이브러리의 제작목적은 개인공부입니다. 정적라이브러리를 만들어서 배포하는연습+여러가지 알고리즘공부 입니다. 최근에 알고리즘에 관해서 관심이 생겨서 이론을 공부한뒤, 만들어봤습니다. 라이브러리 다운로드 https://github.com/DRAGONPROCESS/DragonAlgo.. 2021. 6. 5. 문자열 길이측정 함수 [ vs2019 inline assembly ] 개발환경 >> Visual Studio 언어 >> C++14(+) 운영체제 >> Windows10 안녕하세요~!! 이번에는 문자열의 길이를 젤수있는 함수를 인라인어셈블리를 이용해서 만들도록 하겠습니다..! namespace dp { int chrlen(const char* _str) { _asm { xor eax, eax ; eax를 0으로 초기화 mov esi, dword ptr[_str]; esi레지스터에 _str주소값입력 ReZe:; ReZe 점프케이블 cmp byte ptr[esi + eax], 0; 만약 _str[eax]값이 '\0'일경우 je Exit; Exit 점프케이블로 이동 inc eax; eax레지스터값 1증가 jmp ReZe; ReZe 점프케이블로 이동 Exit:; Exit 점프케이블.. 2021. 5. 14. 드래곤파일 클라이언트 <1.0.0> 다운로드 [ C++ DragonFileClient<1.0.0> 배포 ] 안녕하세요!!!!!!!!!!!!!!!! 이번에는 자작프로그램 배포입니다! 저번에 올렸던 DragonGUI를 배포한지 벌써 1달이 지났습니다..!!! https://mawile.tistory.com/145 DragonGUI 1.0.0 배포 [ GUI앱을 쉽게 만들어보자! ] 안녕하세요 이번에 배포할 자작 응용프로그램은 DragonGUI 입니다. 우선은 본 프로그램의 최종목적은 사용자가 직접 쉽고 간편하게 GUI애플리케이션을 만들도록 도와주는것입니다. 이번에는 시간 mawile.tistory.com 이걸 올린지 벌써 한달이라니...ㄷㄷㄷ... 방금 봤는데 한 2주전에 올린것같은데 1달이네요.... 자......!!!!! 이번에는 무슨 프로그램이냐.!?!?!?!? 이번에는 좀 실용적인것을 만들었습니다...!!.. 2021. 5. 13. for루프문 [ vs2019 inline assembly ] 개발환경 >> Visual Studio 언어 >> C++14(+) 운영체제 >> Windows10 안녕하세요!!! 요즘에 프로젝트개발을 하면서 프로그램 최적화와 속도향상에 관한 많은 생각을 거듭한끝에 극한의 극한까지 프로그램을 효율적으로 최적화할 수 없을까?? 라는 생각을 하게되었습니다. 그래서 알아본것이 Assembly!!! 특히 vs2019는 디버깅을 통해 디스어셈블이 바로 가능하기 때문에 바로 연습해봤죠!! 이번에는 새로운 카테고리를 개설했는데 Assembly를 C++코드로, C++코드를 Assembly코드로 변환하면서 분석하고 설명하는식으로 가겠습니다. 이번에 이 강좌를 진행하면서 저도 같이 공부를 하게되겠습니다. 이것을 C++코드 아예없이도 완전하게 Assembly만으로 프로그램을 자유롭게 만들.. 2021. 5. 12. HDC를 이미지로 저장 (HDC -> HBITMAP) - C++ / GDI+ 개발환경 >> Visual Studio 언어 >> C++17이상 운영체제 >> Windows10 안녕하세요~!! 이번에 시험이 끝난기분으로 만들어본 예제입니다! 우선은 HDC라는 것은 WINAPI GDI에서 그림판?? 미술로따지면 스케치북 같은 개념입니다! 그러한 스케치북에다가 그린그림을 실제 사진파일로 출력하는 예제입니다!! 저가 결심한게 있는데, 이러한 강좌나 예제글을 진행할때는 소스코드에 주석을 최대한 자세하게 달려구요! [ 예제(HDC를 이미지로 저장) ] #pragma comment(lib, "gdiplus.lib") //gdiplus 라이브러리사용링킹입니다. #include //윈도우api사용! #include //gdi+사용! #include //getch()메서드 사용! /* 인자로 전달받.. 2021. 4. 29. 이미지 픽셀정보 직렬화 - C++ / GDI+ 개발환경 >> Visual Studio 언어 >> C++17이상 운영체제 >> Windows10 안녕하세요!!!!!ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 저가 왜이렇게 기분이좋으면서 슬프냐면, 오늘하루종일 이미지파일 직렬화와 역직렬화를 연구하고, 직접 모두 구현했습니다. 바로 알려드리겠습니다!!!!! +추가로 이것만있으면 소켓통신으로도 활용하여 이미지전송과 받아오기가 자유롭게 가능합니다요!!ㅠㅠㅠ 파이썬이랑 C#으로는 옛날에 구현해봤는데, C++로는 처음구현해보는거라서 재밌더라구요 ㅋㅋbb --소스코드 설계하고 코딩하는데 총 약7시간정도 썼네요 C++ / GDI+ / 이미지파일 (역)직렬화하기 #pragma once #pragma comment(linker, "/SUBSYSTEM:CONSOLE") //콘솔사용 명시 #.. 2021. 4. 15. DragonGUI 1.0.0 배포 [ GUI앱을 쉽게 만들어보자! ] 안녕하세요 이번에 배포할 자작 응용프로그램은 DragonGUI입니다. 우선은 본 프로그램의 최종목적은 사용자가 직접 쉽고 간편하게 GUI애플리케이션을 만들도록 도와주는것입니다. 이번에는 시간이 없기때문에 빠르게 진행하겠습니다. 다운로드 DragonGUI_1.0.0.zip drive.google.com 우선은 지금은 시간이없어서 구글드라이브로 공유하지만, 나중에 시간남을때 Github로도 공유링크 올리겠습니다. [ 시연영상 ] youtu.be/wl9_6SVffCM 2021. 4. 14. DragonStream <v1.0.0> 라이브러리 개발일지 #0 개발환경 >> Visual Studio 언어 >> C++20이상 운영체제 >> Windows10 안녕하세요!! 이번에 진행할 프로젝트는 DragonStream 이라는 라이브러리제작입니다. 저가 저번에 개발하고 있던 DragonDB 라이브러리는 이 라이브러리에 일부로 들어갈 예정입니다!! mawile.tistory.com/129?category=959179 DragonDB - C++ 프로젝트 #1 근황 현재 제작진행중! 일부 소스코드 공개~~~ 아 참고로 현재만들고있는거는 서버와 데이터베이스구축을 도와주는 라이브러리 제작중입니다! 혹시 다 완성하고 어느정도 여유가있다면, http서버쪽도 mawile.tistory.com [ 주요 목적 ] 여러가지 스트림형성을 도와주는 라이브러리이다. 주로 다룰 스트림종류는.. 2021. 2. 27. DrakkTcp/ip<ver1.0> 라이브러리 배포 개발환경 >> Visual Studio 언어 >> C++17이상 운영체제 >> Windows10 안녕하세요! 오랜만에 프로그래밍관련 글입니다..ㅋㅋ 소켓작업을 하다보면 처음 유니스소켓을 만들때마다 매우 쓰기가 귀찮습니다. 말그대로 귀차니즘땜에 만들어진 라이브러리입니다. 그래서 만들었습니다. 설명은 헤더파일 안에 모두 적어놨으며, 자세한 사용방법은 영상과 다운로드주소를 올려놓았습니다! [ 다운로드 ] 다운로드 DRAGONPROCESS/Drakktcpip-Socket-Network-Header Drakktcpip Socket Network Header. Contribute to DRAGONPROCESS/Drakktcpip-Socket-Network-Header development by creating an.. 2021. 2. 18. 키로거 만들기 C++ 최신글 https://mawile.tistory.com/257 해킹도구 개발 | 키로거(Keylogger) 이론및 개발실습 🔥 소개 안녕하세요! 오랜만에 해킹툴 개발강좌가 돌아왔습니다!! 이번 시간에는 속도측면에서 좀 더 강화된 설계를 가지고 돌아왔습니다. 옛날에 올린 키로거관련 포스팅입니다. https://mawile.ti mawile.tistory.com 개발환경 >> Visual Studio 언어 >> C++20 운영체제 >> Windows10 안녕하세요..! 이번에는 키로거를 만들게 되었습니다. 키로거는 만들기 엄청 간단합니다. 이글과는 상관없지만, 현재 다음 악성코드 강좌는 랜섬웨어만들기가 될것같아요~! 기대해주세요~~ {[ 소스코드 ]} #include //c++stdio #include //.. 2021. 1. 29. DragonDB - C++ 프로젝트 #1 근황 현재 제작진행중! 일부 소스코드 공개~~~ 아 참고로 현재만들고있는거는 서버와 데이터베이스구축을 도와주는 라이브러리 제작중입니다! 혹시 다 완성하고 어느정도 여유가있다면, http서버쪽도 만들어서 데이터베이스까지 지원하게할려는데 한번 이 부분은 상황 지켜보겠습니다 C++20입니다. 이번에 C++20에서 모듈이라는것도나와서 한번 써보려구요! 그럼이만! 2021. 1. 24. 웹페이지 이미지 크롤링 [ C++20 ] 개발환경 >> Visual Studio 언어 >> C++20 운영체제 >> Windows10 안녕하세요~!~!~!~!!! 이번에는 C++로 간단하게 웹페이지 이미지 크롤링 자동화를 만들어 보겠습니다. 우선 이번에 사용할 사이트는 pokemonkorea.co.kr/pokedex :::포켓몬 도감 포켓몬 도감::: pokemonkorea.co.kr 여기입니다. 그럼 시작해보겠습니다~!!! 우선 아래와같이 이미지를 정하고 위치를 찾습니다~ 저는 보니까... 포켓몬사진을 다 크롤링하고싶어요~! 다 가져올래요~ 이미지경로가 나올때까지 쭈우욱... 따라가줍니다! 그리고 이미지의 경로를 찾았습니다! 그럼 코드를 작성해보겠습니다~! {[ 소스코드 ]} #include #include #pragma comment(lib.. 2021. 1. 23. C++ 프로젝트 #0 - HyperConnector 안녕하세요 이번에 springLood개발을 하면서 잠시 간단하게 C++기반의 프로그램을 하나만드려고합니다. 저희 고등학교도 방학이고 하다보니까 널린게 시간이고 그 시간에 할것도없어서(공부:나는??) 주구장창 프로젝트를 만들려고하는데요 이번에 만들 프로그램은 예전에 만들었던 mawile.tistory.com/7 링크 연결프로그램 그냥 간단하게 만들어본링크연결 자작프로그램입니다ㅎㅎ아시다시피 기반은 C++이구요. 소스코드와함께 파일도같이 첨부해놓겠습니당~ 저의컴이 살짝 똥이라서 크흠...인터넷브라우저열고 사 mawile.tistory.com 웹사이트들을 쉽게 리스트로 저장하고 연결시켜주는 프로그램입니다. 위 글은 보시다시피 1년전글이구요. 지금 잠깐 코드를 봤는데 엄청 코드가 난잡하더라구요. 그래서 그 리메이.. 2021. 1. 15. 파일관리 라이브러리 dpFile - 개발일지 안녕하세요 오늘은 뭐 하루종일 할거없나 하고 생각하는데 갑자기 API를 이용해서 여러가지 클래스를 만들어보면 어떨까? 하고 우선 생각해둔건 Dictionary클래스만들기, 멀티쓰레드클래스만들기, 파일관리클래스만들기, 다른 프로세스파이프간의 데이터통신클래스만들기 정도생각해뒀구요 우선 파일관리클래스 나중에 완성하면 배포하겠습니다. 밑에는 간략하게 사용법입니다. 보시죵!!! [[[소스코드 일부]]] [[[ 시연영상 ]]] 2021. 1. 8. 이전 1 2 3 4 다음