티스토리

호박감자의 보안 공부 일지
검색하기

블로그 홈

호박감자의 보안 공부 일지

hobak-gamja.tistory.com/m

0.<

구독자
1
방명록 방문하기

주요 글 목록

  • [CodeEngn] Malware Analysis L08 코드 엔진 Malware Analysis 마지막 문제이다. 마지막 문제이니만큼 Flow Chart가 굉장히 길다. 이런 Flow로 코드를 분석하는 건 많이 해보지 않아서, 긴 Flow에 먼저 겁을 먹게 된다. 뭐 간단하게 대충 훑어보자. 문제에서 찾아야 할 것은 다른 악성코드를 실행하는 부분을 찾는 것이다. '실행'이 키 포인트이다. 다운로더, 드로퍼 등 악성코드에서 다른 악성코드를 실행시키는 것은 흔한 일 같다. 그래서 이 문제를 푸는 것이 꽤 도움이 될 것 같다(악성코드 분석에서). Flow chart를 볼 때 우리가 볼 수 있는 것은 한정적이다. 문자열 몇 개, 함수 이름 몇 개, Flow(True or False) 훑어보니 다음의 몇 부분이 눈에 띈다. .inf라고 쓰여있다. inf는 검색해 보니.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L07 일곱 번째 문제이다. 주어지는 Flow는 6번 문제와 동일하다. 접속이 안될 경우 몇 ms 단위로 재접속을 하는지 알아내면 된다. 해당 부분은 다음 Flow이다. http://어쩌고 하는 사이트에 접속을 시도하고, 접속 실패 하면, 밑에 Flow에서 Sleep 함수를 사용해 잠깐 쉬었다가 재접속을 시도한다. Sleep 함수는 다음과 같다. https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-sleep Sleep function (synchapi.h) - Win32 apps Suspends the execution of the current thread until the time-out interval elapses. learn.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L06 6번 문제이다. 코드 엔진에는 악성코드 분석에 대해 8문제가 있으니, 이 문제를 풀면 두 문제가 남는다. 이 문제에서는 악성코드 Flow의 일부를 제공해 주는데, pdf 파일로 제공된다. 이렇게 생겼는데, 화질이 좋지 않으니 직접 다운로드한 파일을 참고하자. 문제에서 구하라고 한 것은 Thread Mutex가 무엇인지이다. 그렇다면 먼저 Thread Mutex에 대해 알아야 할 것이다. 구글링 해보면 좋은 자료가 많다. 간략히 이해한대로 설명하면, 여러 개의 쓰레드가 사용되고, 공유 자원이 사용될 때 문제점이 발생한다. 두 개 이상의 쓰레드가 동시에 자원에 접근하게 될 때 하나 이상의 쓰레드의 작업이 제대로 적용되지 않는 문제점이다. (너무 간략하게 설명했다. 뮤텍스에 대해 좋은 예를 들어 설명해주는 글.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L05 이번에도 3번 문제처럼 무엇을 하는 함수인지 분석하는 문제이다. int Malware_L05( char *StartOfData, char *Output, int SizeOfData) { int encoded = 0, i, l = 0; char Table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; long buffer, buffer2; do { ... for(i = 3 ; i >= 0 ; i--, l++) { buffer2=buffer; buffer2 &= 0x3f; *(Output + i)=Table[buffer2]; buffer>>=6; } Output += 4; encoded += 4; SizeOfData -= 3;.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L04 이번 문제는 파일이 없는 진짜 '문제'이다. PHP 설정파일에서 SQL Injection을 방지하기 위한 옵션은 무엇일까. 그냥 "php sql injection" 이런 식으로 검색하면 수많은 내용이 나온다. 이 많은 걸 일일이 쳐볼 수는 없는 노릇이다. 또 다른 문제점은 이 문제가 만들어진지 꽤 됐다는 것이다. 자세히는 모르지만 대략 2012년 즈음에 만들어진 문제들 같다. (확실하지 않다) 가장 최신의 패치를 적용하는 것이 보안에 있어서 가장 좋겠지만, 이 문제는 이 문제가 만들어졌을 때의 패치 내용을 적어야 한다. 다행히도 문제에서 힌트가 있다. php 설정파일에서의 sql injection을 방지하기 위한 옵션이다. 그럼 일단 php 설정파일에 대해서 알아보자. 음.. php 설정파일은 php.i.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L03 이번엔 '무엇을 하는' 함수인지를 알면 된다. 문제코드가 정말 짧다. (맘에 든다) u_short Malware_L03(u_short * data, u_short length) { register long value; u_short i; for(i=0 ; i > 1) ; i++) value += data[i]; if( (length & 1) == 1 ) value += ( data[i] > 16 ); return (~value); } 매개 변수는 두 가지로, data와 length이다. 함수 안에서 value라는 변수를 선언해서, for 문을 통해 data의 값들을 더해준다. 처음에는 대충 훑어보고, 난독화 혹은 암호화인가 생각했다. 그런데 아니어서 조금 더 집중해서 쳐다봤더니, 입력.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L02 이번엔 '무엇'을 공격하는 것인지 찾아야 한다. char body[]= "\r\n\r\n" "\r\nSelect \"DAV:displayname\" from scope()\r\n\r\n" "\r\n"; CScannerMalware_L02::CScannerMalware_L02() { m_sScannerName.Assign("Malware_L02"); } void CScannerMalware_L02::StartScan(const CString &sHost) {bool bSuccess=false; if(ScanPort(sHost.CStr(), 80)) {g_cMainCtrl.m_cIRC.SendFormat(m_bSilent, m_bNotice, m_sReplyTo.Str(), "%s: scanning ip %.. 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Malware Analysis L01 악성코드 분석 첫 번째 문제. 문제들을 보면 악성코드 소스의 일부분이라고 되어있다. 소스 코드의 일부분이므로 실행되지 못할 것이기 때문에, 로컬에서 압축을 풀고 코드를 볼 수 있다. # LAYER 2 addr_in.sin_family=AF_INET; addr_in.sin_port=htons(TargetPort); addr_in.sin_addr.s_addr=TargetIP; # IP HEADER ipHeader.h_verlen=(4 공감수 0 댓글수 0 2023. 8. 6.
  • [CodeEngn] Basic RCE L09 코드엔진 챌린지들을 기초부터 풀고 있다. 그중 이 문제는 안티 디버깅 기법이 들어간 문제여서, 기록해 두려고 한다. StolenByte를 구하라고 한다. 훔쳐진 바이트? 처음엔 이게 뭔지 모르고 일단 디버깅을 시작했다. x32dbg로 디버깅을 하니 unpacking 코드가 있어서 peview로 살펴봤다. 섹션 이름을 보면, UPX로 패킹되어 있단 것을 알 수 있다. F8로 움직이며, OEP를 찾아주었다. 위 사진이 OEP 부분이다. 코드는 복잡하지 않다. CreateFileA 함수를 실행하고서 리턴 값에 따라서 메시지 박스가 띄어진다. well done! 메세지 박스를 띄어야 하는 건가 싶어 CreateFileA 함수를 찾아봤었는데, 풀리지 않았다. StolenByte가 무슨 뜻인지 모르겠어서, 그냥 다.. 공감수 0 댓글수 0 2023. 8. 4.
  • [Reversing.kr] Direct3D FPS 문제 풀이 제공되는 파일 게임 실행 모습 총을 쏘는 게임이다. 처음에 너무 느려서 안 움직이는 줄 알았는데, 아주 천천히 움직이긴 한다. 조금 나가보면, 이런 고구마 군단이 있는 걸 볼 수 있다. 고구마에 찰싹 붙으면 HP가 떨어진다. 또, 총으로 고구마를 가까이서 계속 쏘면 사라진다. (참고로 게임 실행하면 마우스 꺼내기가 곤란한데, Alt를 누르면 커서가 게임 밖으로 나온다.) 너무 귀여운 게임이다. Flag는 어디있을까? /data 폴더를 살펴보면 딱히 flag로 의심되는 파일은 없다. 디버깅을 통해 살펴보자. 문제 분석 # 참고로 아래 캡처 사진들에서 프로그램은 0xE90000에 Image가 로딩되었다. # ImageBase: 0xE90000 먼저, 프로그램에서 사용되는 문자열 목록을 보자. "Game Ov.. 공감수 0 댓글수 0 2023. 7. 14.
  • Position 파이썬 코드 해설 이번 글에서는 Position 파이썬 코드를 해설하겠다. Position 문제에 대해서는 다음 글을 참고하면 된다. 2023.07.03 - [리버싱] - Reversing.kr Position 문제 풀이 Reversing.kr Position 문제 풀이 주어지는 파일 Position.exe 실행 모습 ReadMe.txt 내용 ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p Input name은 알파벳이 들어가고, Input Serial은 숫자가 들어 hobak-gamja.tistory.com 전체 코드 import copy import re de.. 공감수 0 댓글수 0 2023. 7. 3.
  • Reversing.kr Position 문제 풀이 주어지는 파일 Position.exe 실행 모습 ReadMe.txt 내용 ReversingKr KeygenMe Find the Name when the Serial is 76876-77776 This problem has several answers. Password is ***p Input name은 알파벳이 들어가고, Input Serial은 숫자가 들어가나 보다. 문제 분석 참조되는 문자열 목록을 보면 아까 실행 창에서 보였던 Input Name이랑 Input Serial이 보인다. 그리고 그 밑에 Correct! 와 Wrong 문자열이 보인다. 실행되는 모습에서 보이다시피 Wrong이라는 문자열이 Default로 프로그램 하단에 적혀있다. 그럼 비교를 통해서 이 Wrong 부분을 Correct!로.. 공감수 0 댓글수 0 2023. 7. 3.
  • Reversing.kr ImagePrc 문제 풀이 주어지는 파일 실행 모습 하얀색 부분에 낙서가 가능하다. Check 버튼을 누르면 Wrong이라고 뜬다. 분석 먼저, 프로그램에 사용된 스트링들을 보자. "Wrong" 문자열 부근을 봐서 어떤 비교를 거친 건지 살펴보자. 반복문이 있고 반복문에서 jne 명령어를 통해서 "Wrong" 메시지 창을 띄우는 부분으로 분기하는 것을 볼 수 있다. 반복문은 dl과 bl을 비교하면서 같은 지 확인한다. 총, 0x15F90만큼 반복된다. 먼저 첫번째 dl로 들어가는 ecx 부분은 위의 사진과 같다. bl에 들어가는 eax+ecx 부분은 위와 같다. ImagePrc.exe에 그리는 그림과 정답 이미지를 한 비트씩 비교해서 맞는지 틀린 지 확인하는 것 같다. 이런 식으로 그리고 Check 해보니, ecx가 사용자가 입력.. 공감수 0 댓글수 0 2023. 6. 18.
  • Reversing.kr Replace 문제 풀이 파일 실행 파일 하나만 주어진다. 실행 모습 프로그램의 모습은 심플하다. 입력창이 하나, Check 버튼, 그리고 밑에 Wrong이라고 써져 있다. 입력창에는 숫자만 입력 가능하다. 아무 숫자나 입력하고 Check 버튼을 누르면 이상하게도 프로그램이 그냥 종료되어 버린다. 분석 어떤 것을 해야되는지조차 아직 모르는 상태이다. 저 wrong 부분을 맞았다고 바꾸면 될 거 같은데 일단 x32dbg로 열어보자. 문자열 검색에 Correct! 문자열이 있다. 저 Correct 부분이 실행되도록 하면 될 것 같다. API들도 보면, GetDlgItemInt라는 함수가 입력창에 숫자를 입력한 것을 가져오는 함수인 것 같고, SetDlgItemTextA가 Correct 문자열을 dlg에 설정하는 함수인 것 같다. 코.. 공감수 0 댓글수 0 2023. 6. 16.
  • Reversing.kr Music Player 문제 풀이 주어지는 파일 ReadMe.txt 내용 This MP3 Player is limited to 1 minutes. You have to play more than one minute. There are exist several 1-minute-check-routine. After bypassing every check routine, you will see the perfect flag. Music_Player.exe 실행 화면 목표 1분 미리듣기만 가능한 뮤직플레이어의 1분을 체크하는 몇몇 루틴을 회피하여 1분 이상 들을 수 있도록 하기!! 풀이 먼저, 재생할 음악 파일이 필요하다. 유튜브에서 무료로 음원을 받을 수 있었다. 음악을 재생하면 다음 사진과 같이 시간이 나오고 하단에서 바가 움직인다. 1분이.. 공감수 0 댓글수 0 2023. 6. 15.
  • Reversing.kr Easy Keygen 문제 풀이 파일은 두 가지가 제공된다. ReadMe의 내용은 다음과 같다. ReversingKr KeygenMe Find the Name when the Serial is 5B134977135E7D13 파일을 실행했을 때 두 가지를 물어본다. (이름과 시리얼 번호) x64dbg로 디버깅해 보자. EntryPoint 부근의 코드는 위와 같다. 문자열 참조를 통해 보면 입력할 때 사용하는 문자열들인 "Input Name: "과 "Input Serial" 문자가 보인다. 그 밑에는 비교한 결과에 따라 맞는지 틀렸는지를 출력하는 코드가 있다. 입력한 이름을 가지고 시리얼 번호를 생성하여 입력한 시리얼 번호와 일치하는 지를 확인하는 구조이다. 문제에서 구해야 하는 것은 ReadMe에 적혀있는 시리얼 번호 5B13497713.. 공감수 0 댓글수 0 2023. 6. 2.
  • Ubuntu 고정 IP 주소 설정하기 본 내용은 '악성코드 분석 시작하기' 책 내용 실습 중 일어난 에러에 대해 해결하는 과정을 정리한 글이다. 이번에 에러가 난 부분은 Ubuntu16.04에서 고정 IP 주소를 설정하는 부분이다. 책에서 설명한대로 했지만 고정 IP 주소가 설정되지 않았다. 이를 위해 다음 사이트를 참고했다. https://berasix.tistory.com/entry/Ubuntu-%EB%B2%84%EC%A0%84%EB%B3%84-%EA%B3%A0%EC%A0%95-IPStatic%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95CLI [LINUX] Ubuntu 버전별 고정 IP(Static)설정 방법(CLI) ■ Ubuntu 고정 IP(Static)설정 방법(CLI) ■ Ubuntu 고정 IP(Static).. 공감수 0 댓글수 0 2023. 4. 20.
  • yara-python 설치 안되는 문제 해결하기 책을 사서 실습을 위해 Ubuntu16.04.7에 yara-python을 설치해야 했다. 그런데 자꾸 뭔지 모를 에러가 났다. 에러 메세지가 굉장히 길었고, 구글링으로 해결하기는 어려웠다. 더보기 ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-rghs4owh/yara-python_b2ee521c7d904b1496c8037381885e30/setup.py'"'"'; __file__='"'"'/tmp/pip-install-rghs4owh/yara-python_b2ee521c7d904b149.. 공감수 1 댓글수 0 2023. 4. 20.
  • Windows x64 Universal Shellcode 작성하기 윈도우에서 작동하는 쉘코드를 만들기 위해 아래의 두 사이트를 참고했다. https://rninche01.tistory.com/entry/Universal-Shell-Codex64제작-및-실습 Universal Shell Code(x64)제작 및 실습 이번에는 저번에 배웠던 x86환경에서 Universal Shellcode를 작성하는 원리와 실습에서 응용하여 x64환경에서 Universal Shellcode를 작성하여 실행하는데 목표를 두었다. 참고로 저번에는 WinExec함수를 통해 rninche01.tistory.com https://wogh8732.tistory.com/183 window x64 환경에서 Universal shellcode 만들기 목차 소개 환경 분석 3.1 쉘코드 작성 3.2 쉘코드.. 공감수 0 댓글수 0 2023. 4. 12.
  • 시스템이 지정된 프로그램을 실행할 수 없습니다. 해결 방법 여러 테크닉에 대해 코드로 구현하고 실행하다 보면 cmd 창에서 다음과 같은 문구가 뜨며, 프로그램이 실행되지 않을 때가 있습니다. 제가 찾은 해결방법은 두가지 입니다. 1. Microsoft Defender의 실시간 보호를 꺼줍니다. 2. 해당 파일에 대해 위협을 허용해줍니다. 1번은 검색하면 방법이 많이 나오므로, 2번에 대해서만 설명하겠습니다. 파일을 실행하고 시스템이 지정된 프로그램을 실행할 수 없다는 문구가 나오면, 화면 오른쪽 하단에 다음 사진과 같은 안내가 뜹니다. Microsoft Defender가 해당 파일이 위협이라고 판단하고 차단한 것입니다. 이 알림을 클릭해줍니다. 그럼 아래와 같은 Windows 보안 창이 뜹니다. 만약에 알림 창을 클릭하지 못했다면, 직접 Windows 보안 창으.. 공감수 0 댓글수 0 2023. 4. 5.
  • 웹 언어들을 공부한 방법 안녕하슈~👋👋 호박감자여라 오늘은 제가 웹 언어들인 html, css, javascript 들을 공부한 방법에 대해 정리해놓고 제가 들은 인강들의 후기를 적어보겠습니다. (인강의 내용을 적어놓은 것도 이 블로그에 정리해두고 싶지만, 그럼 인강내용들을 유출하게 되니까 후기만 적겠습니다.) 먼저 저는 프로그래밍 동아리에서 웹 프로젝트를 진행해, 2022.3월말 ~ 2022.5월 말까지 웹 언어들을 공부했습니다. html 강의는 생활코딩에서 들었습니다. https://opentutorials.org/course/3084 WEB1 - HTML & Internet - 생활코딩 --- 우리는 지금부터 코딩 웹 인터넷 컴퓨터라는 거대한 주제에 대한 탐험을 시작할 거예요. 이 여행을 시작하기에 앞서서 한가지 준비가 필.. 공감수 1 댓글수 2 2022. 5. 27.
  • 쥐: 한 생존자의 이야기를 읽고 https://book.naver.com/bookdb/book_detail.naver?bid=14644636 쥐 14년의 세월 동안 공들여 만든, 만화책 유일의 퓰리처상 수상작!만화책 유일 퓰리처상 수상작 『쥐 : 한 생존자의 이야기』. 새로운 표현 양식을 설계하고 실험적인 기법으로 《쥐》를 탈고하기 book.naver.com 이번에는 이 책을 읽었다. 홀로코스트에 관한 내용으로 글이 아닌 만화로 쓰여 있다. 다만, 책을 읽고 몇 주가 지난 상태로 쓰는 독후감이기 때문에 무언가 잘못 기억하는 부분이 있을 수도 있다. 일단 이 책의 장점을 얘기하고 싶다. 어떤 역사학자의 홀로코스트에 대한 견해나, 역사적인 내용을 서술한 것이 아니라, 홀로코스트를 겪은 한 사람의 경험담이 만화로 나와있다. 그래서 뭐랄까.... 공감수 1 댓글수 1 2022. 5. 6.
  • 최선의 삶을 읽고 독서 토론 동아리에서 읽었던 책들에 대해서도 정리해보고자 한다. 먼저 내가 추천하고, 토론했던 '최선의 삶'에 대한 리뷰이다. 이 책에 대한 스포가 될 수도 있으니 주의하였으면 좋겠다. https://book.naver.com/bookdb/book_detail.nhn?bid=9272731 최선의 삶 한동안 충격에서 헤어나기 어려울 '신종'의 출현!제4회 문학동네 대학소설상 수상작 『최선의 삶』. 2013년 중앙신인문학상을 수상하며 활발히 활동하고 있는 시인 임솔아는 오직 소설이라는 형 book.naver.com (책을 읽고서 몇 달 뒤에 쓰는 리뷰라 내용이 정확하지 않을 수 있다.) 독서 토론을 하기 위한 책을 어떻게 정해야 할까 고민이 많았다. 그간 읽은 많지 않은 책들을 생각하며 무언가 상을 받은 책.. 공감수 0 댓글수 0 2022. 4. 11.
  • html 공부 2편 생활코딩 html 강의 정리 편 기본 구조 WEB 처음에 써주고 이라는 태그 안에 와 태그가 들어가 있는 구조로 작성한다. 태그는 본문의 부가적인 내용이라고 할 수 있다. 위에 예시에 들어가 있는 코드를 보면 과 tag가 있는데, 태그는 웹 페이지의 제목을 가리킨다. 는 강의에서 배운 charset이라는 속성만 알고 있는데, 저 속성은 이제 저 html 파일의 글들을 utf-8로 표현? 디코딩? 하라는 내용이다. 아톰의 오른쪽 아래를 보면은 이런 부분이 있다. utf-8로 작성 중이라는 얘기로 보이고, 그렇기 때문에 이 파일이 utf-8로 작성되었다는 것을 표기하기 위한 속성으로 보인다. 이제 실제 페이지에 나타나는 부분인 태그 안쪽을 볼 것이다. 제목을 나타내는 태그 h1, h2, h3... h1 h2.. 공감수 0 댓글수 0 2022. 4. 9.
  • html 공부 시작! 웹 해킹을 공부하기 위해서 웹 언어들을 공부해야겠다고 생각했다. 그런데 딱 마침 동아리에서 웹 개발 프로젝트를 시작해 모집중에 있었다. 간단히 공부만 하는것이 아니라 프로젝트를 진행하는 것이 좀.. 시간 낭비가 될까 아니면 좋은 기회가 될까 많이 고민하다가 결국 신청했다. 그래서 처음! 먼저 공부를 시작하는데 생활코딩에서 html 강의를 듣기 시작했다. 지금 6번 강의까지 들어서 이제 막 웹페이지에 글을 써봤는데 어휴.. 너무 재밌다!! ㅋㅋㅋㅋㅋ 흫흐헿 쩐당 아톰이라는 html editor를 사용하는데 UI가 우주를 나타내는 듯한 아주 귀여운 모양이었다. 처음 해킹이라는 걸 하고 싶었을때, 인터넷이라는 광활한 공간을 조종하는 듯한 모습이 멋있어서였는데, 그때의 그 마음이 다시 생각나는 것 같다. 아무튼.. 공감수 0 댓글수 0 2022. 4. 3.
  • Process Hollowing 요즘 APT 제작하기 멘토링을 받고있다. 어나니머스가 러시아를 공격하는 것을 보고, 나도 저렇게 공격하는 법을 배우고 싶다고 생각해서 멘토링을 신청하게 되었다. 첫 시간 과제는 Process Hollowing에 대해 조사하는 것이다. 참고 사이트는 MITRE ATT&CK이다. 1. process hollowing이란 무엇인가. process hollowing은 살아있는 프로세스의 구별된 주소 공간(메모리)에 임의의 코드를 실행하는 방법이다. 중단된 상태의 프로세스를 생성하고, 그것의 메모리를 언매핑한다. 그리고 그곳에 악의적인 코드를 재배치한다. 2. 어떠한 목적을 달성하기 위해 사용하는가. Defense Evasion(방어 회피), Privilege Escalation(권한 상승) 3. 해당 목적을 달.. 공감수 0 댓글수 0 2022. 3. 20.
  • [책리뷰] 혼자 공부하는 머신러닝+딥러닝 공부를 함에 있어, 좋은 책을 찾아 양질의 정보를 얻는 것만큼 기쁜 건 없다. 오늘부터는 내가 공부했던 책들, 공부하는 책들을 리뷰하며 책의 내용을 정리해보려고 한다. 혼자 공부하는 머신러닝+딥러닝이라는 책은 머신러닝이라는 분야를 입문하는데 있어 감히 최고의 책이라 말하고 싶다. 나는 이 책을 공모전을 하면서 접하게 되었는데, 그때 진행하던 프로젝트에서 자연어 처리 딥러닝 모델을 구현했어야 했다. 허나 문제점은 github에 있는 자연어 처리 코드들을 아무리 봐도 이해가 되지 않았던 것이다. 또, 한국어 자연어 처리 코드도 별로 없어서 프로젝트에 맞는 코드를 찾기란 불가능한 일이었다. 나름 빅데이터 센터 같은 곳에서 제공해주는 무료 강의들도 공부했던 상태였는데, 할 수 있는건 없었다. 하는 수 없이, 우.. 공감수 0 댓글수 0 2022. 3. 20.
  • 백준 4949 파이썬 풀이 안녕하세요 호박감자입니다. 이번엔 4949번 풀이를 리뷰하겠습니다. 스택을 사용한 코드로, 간략히 만 설명하겠습니다. import sys input = sys.stdin.readline sentence = input() while sentence != '.\n': stack = [] for s in sentence: if s == '(': stack.append('(') elif s == '[': stack.append('[') elif s == ')': if not stack or stack.pop() != '(': print('no') break elif s == ']': if not stack or stack.pop() != '[': print('no') break else: print('yes' .. 공감수 0 댓글수 2 2022. 3. 15.
  • 백준 2164 파이썬 풀이 안녕하세요 호박감자입니다. 오늘 풀어볼 문제는 백준의 2164번 카드 2 문제입니다. 이 문제에서는 보통 많은 분들이 큐를 사용해서 푸는 것 같습니다. 저는 큐를 사용해서 풀지 않았는데요, 제가 찾은 규칙을 사용한 코드와, 다른 사람의 코드 중에서 정말 좋았던 코드를 리뷰해보겠습니다. 1. 내코드 코드를 짜면서 생각한 규칙을 먼저 설명하겠습니다. 카드 덱의 맨 윗장, 즉, 1번 카드를 버리게 됩니다. 그리고 2번 카드는 맨 아래로 가게됩니다. 3번 카드는 버려집니다. 4번 카드는 맨 아래로 가게됩니다. 이런식으로 반복이 된다면, 만일 10장의 카드가 있었다고 할 때, 생존할 카드는 다음과 같을 것입니다. 1 2 3 4 5 6 7 8 9 10 그리고 2번 부터 차례로 밑으로 이동되었으니, 9번 카드를 버리.. 공감수 0 댓글수 0 2022. 3. 15.
  • 백준 2108 파이썬 풀이 안녕하세요 호박감자입니다. 이번엔 2108번 통계학 문제에 대해서 제가 짠 코드를 리뷰해보겠습니다. 이번 코드는 간략히 만 소개하겠습니다. import sys def find_frequency(li): frequency_list = [0] * 8001 # -4000 ~ 4000 for num in li: ind = num + 4000 frequency_list[ind] += 1 max_num = max(frequency_list) max_index = frequency_list.index(max_num) if frequency_list.count(max_num) > 1: frequency_list[max_index] = 0 return frequency_list.index(max_num) - 4000 i.. 공감수 0 댓글수 0 2022. 3. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.