본문 바로가기

알고리즘

(7)
[백준] 2493 - 탑 교수님이 어렵다고 하셔서 쫄아있었는데 정말 어렵다 ,, ^^!; 야구 문제가 여러 알고리즘들이 섞이고, 야구의 룰에 따라 값들을 관리해줘서 어렵다면 이 문제는 나오는 자료구조는 스택 하나 뿐인데 그 스택을 단순한 LIFO + 다른 기능을 추가적으로 생각해봐야한다. 사실 스택문제라는 걸 알기 전까진 이 문제가 스택으로 풀릴 수 있을 거란 생각조차 못했고, 브루트포스인가 하고 생각했었다. 하지만 완전탐색이라고 하기엔 입력 범위가 너무 컸으며, 완전탐색으로 코드를 짰더니 백준에선 틀렸다고 하고, 정올에선 시간초과 에러가 났다.. 이때부터 ㄹㅇ 멘붕 시작ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 한시간 가량 짠 코드가 아까웠지만... 이럴 땐 과감히 버려야 한다는 교수님의 말씀이 기억나서 과감히 버리고 스택으로 접근을 시도해보았다. 각..
[백준] 17282 - 야구 순열의 경우의 수(타자 순서)에 따른 결과값(야구 점수)를 일일히 대조해서 각각의 순열 중 최고점을 찾는 문제. 순열을 구하면서 재귀가 사용되었고, 순열에 따른 결과값을 모두 다 살펴본다는 면에서 완전탐색 문제이다. 문제 자체는 어렵지 않은데 (특히 야구를 자주 봤다면,,,,ㅎ) 일반적인 조건이 아닌 특별한 조건(특정 인덱스(4번타자)가 고정되어 있음(0번) -> 따로 처리로직을 짜야 함)이 붙었으며, 타자가 안타, 홈런, 아웃을 했을 떄의 경우의 수를 각각 따로 처리해줘야 해서 좀..골치가 아프다. 특히 인풋으로 상상 이상의 값이 들어오는 걸 감안한다면,, 점수를 계산할 때 모든 경우의 수를 다 체크했는지 확인해줘야 한다. 아웃일 땐 간단한데, 홈런을 쳤을 때 1,2,3루를 모두 리셋해야 하며, 점수를..
이진 탐색 트리 (Binary Search Trees) - 왼쪽 서브트리의 모든 값 bfs/dfs로 탐색, 찾은 노드+부모노드 함께 반환 -> 다른 함수에서 쓰..
후위 표기법 (Postfix Notation) 중위표기법 (infix notation) - 연산자가 피연산자들 사이에 위치 예) (a+b)*(c+d) 후위표기법 (postfix notation) - 연산자가 피연산자들의 뒤에 위치 예) ab+cd+* [중위 표현식을 후위 표현식으로 변경하기 (feat.스택)] a*b+c => ab*c+ a+b*c =>abc*+ //문자는 그 순서 그대로, (피연산자1)(피연산자2)(연산종류) 이 형태 유지 1) 스택에 넣기 피연산자인 경우 바로 print 연산자는 stack 에 push ->우선순위가 더 높(거나같 - 먼저나온게 우선임)은게 들어있다면(지금 넣는 것보다 먼저 해야 하니까), pop 하고나서 push ->우선순위가 더 낮은게 들어있다면, 지금 있는 것보다 위에 있어야 하므로 push 수식의 끝까지 왔을..
파이참 초보의 파이썬 디버깅 해보기 (input값 입력 받을 때) 알고리즘을 풀다 보면 디버깅을 할 때가 아주 아주 많다.(내 기준) 그런데 파이참을 접해 본 지 얼마 안 된 나에겐 사용자에게 입력받을 때, 어떤 창에서 해야 하는지, 입력을 했는데 왜 입력값이 저장되지 않고 null로 뜨는지 등 자주 헤맸던 것 같다.. 인터넷 자료도 여럿 찾아봤지만 입력값을 받는 상황에 대한 구체적인 정보에 대해선 찾을 수 없었다.. 내가 서칭력이 부족해서 그런 걸 sudo,, 마침내 오늘 디버깅할 때 Console창에 입력을 했는데도 입력값이 저장되지 않는 문제를 해결해냈다!!!!!!!! Visual Studio에서 C를 디버깅할 때와는 달리 파이참에서 파이썬을 디버깅할 땐 중단점이 꼭 필요했었다. 파이참에서 Visual Studio에서의 F10과 같은 역할을 하는 한 줄 한줄 넘어..
파이썬 소소한(?) 에러 해결기 - TypeError: 'int' object is not iterable for i in range(1,4): a = x*number(y,i) print(a) print(list(a)) print (list(a))에서 아래와 같은 에러가 났다. TypeError: 'int' object is not iterable 처음에 'iterable'이라는 말만 거슬려서 for i in range 만 뒤적뒤적,, 했는데 한 블로그에서 도움을 받았다! 블로그 글을 보고 블로그를 쓰는,,,창조경제인가 http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53 http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53 list()..
풀다가 막힌것,, token 액세스 오류 여기서 막혔다 token strtokㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 쪽8 참고로 id_list[i] (각각이) 는 const char* 이다. 프로그래밍 경험이 부족해서 그런가, const char* 에 대한 지식이 많이 부족한 것 같아 찾아 보니, const char 이 가리키는 문자열의 내용은 변경할 수 없다고 한다. [이참에 char*, const char*, char* const, const char* const 차이점 알아보기!] char* is a mutable pointer to a mutable character/string. char*은 내용이 변할 수 있는 문자/문장에 대한 포인터 이고, 이 포인터 값(주소값)조차 변할 수 있다. 즉 완전히 다른걸 가리킬 수도 있단 것이다. => 흠 그런데 다시..