본문 바로가기

컴맹탈출기

(18)
[백준] 2493 - 탑 교수님이 어렵다고 하셔서 쫄아있었는데 정말 어렵다 ,, ^^!; 야구 문제가 여러 알고리즘들이 섞이고, 야구의 룰에 따라 값들을 관리해줘서 어렵다면 이 문제는 나오는 자료구조는 스택 하나 뿐인데 그 스택을 단순한 LIFO + 다른 기능을 추가적으로 생각해봐야한다. 사실 스택문제라는 걸 알기 전까진 이 문제가 스택으로 풀릴 수 있을 거란 생각조차 못했고, 브루트포스인가 하고 생각했었다. 하지만 완전탐색이라고 하기엔 입력 범위가 너무 컸으며, 완전탐색으로 코드를 짰더니 백준에선 틀렸다고 하고, 정올에선 시간초과 에러가 났다.. 이때부터 ㄹㅇ 멘붕 시작ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 한시간 가량 짠 코드가 아까웠지만... 이럴 땐 과감히 버려야 한다는 교수님의 말씀이 기억나서 과감히 버리고 스택으로 접근을 시도해보았다. 각..
[백준] 17282 - 야구 순열의 경우의 수(타자 순서)에 따른 결과값(야구 점수)를 일일히 대조해서 각각의 순열 중 최고점을 찾는 문제. 순열을 구하면서 재귀가 사용되었고, 순열에 따른 결과값을 모두 다 살펴본다는 면에서 완전탐색 문제이다. 문제 자체는 어렵지 않은데 (특히 야구를 자주 봤다면,,,,ㅎ) 일반적인 조건이 아닌 특별한 조건(특정 인덱스(4번타자)가 고정되어 있음(0번) -> 따로 처리로직을 짜야 함)이 붙었으며, 타자가 안타, 홈런, 아웃을 했을 떄의 경우의 수를 각각 따로 처리해줘야 해서 좀..골치가 아프다. 특히 인풋으로 상상 이상의 값이 들어오는 걸 감안한다면,, 점수를 계산할 때 모든 경우의 수를 다 체크했는지 확인해줘야 한다. 아웃일 땐 간단한데, 홈런을 쳤을 때 1,2,3루를 모두 리셋해야 하며, 점수를..
Java 기초:: Class란? Class vs Object, OOP의 4요소 [ OOP란? ] Object Oriented Programming, 즉 객체 지향 설계를 뜻한다. [ OOP의 4요소 ] 1. Encapsulation(정보 은닉): 한 클래스에 담겨 있는 데이터와 메소드 중 중요한 것은 클래스 내부에서만 접근 가능하고, 외부에서 필요한 기능만을 공개한다. 2. Inheritance(상속): 객체를 정의할 때 기존에 존재하는 객체를 상속받도록 하면 부모의 데이터와 메소드를 재사용하 수 있다. 3. Polymorphism(다형성): 같은 타입, 같은 메소드를 다양한 방법으로 실행 가능하다. 4. Abstraction(추상화): 현실세계의 여러 객체들의 공통적이고 중요한 특징들을 뽑아내는 것. OOP의 3요소는 여기서 정보 은닉을 제외한 상속, 다형성, 추상화이다. [ C..
Java Data type - 까먹기 쉬운 문법 정리(C와의 차이점 위주) C는 조건문 내에서 연산의 결과값이 0이면 true, 0이 아니면 false로 처리하지만, java는 무조건 boolean 자료형인 true, 혹은 false 만 조건문 내에 오는 것을 허용한다. -> boolean 자료형의 변수에도 0이나 1 같은 숫자가 아니라, 무조건 true 혹은 false만 올 수 있음. char 변수에도 숫자를 넣을 수 있다 -> 이 때, 4바이트에서 2바이트로 데이터 손실이 일어나므로 명시적 형변환 필요. ( 예: char a = (char)65; ) java의 data type 별 표현 가능 범위. 정수형 - byte, short, int, long 실수형 - float, double 문자형 - char 음수를 나타낼 땐 제일 앞 (왼쪽)비트 만큼 -1배 해줬다가 그 오른쪽..
ROS가 무엇인가, ROS의 특징, 노드통신 =================== 들어가는 짧은 잡담 글 ==================== 코딩에 대해서 1도 모르고 전공에도 관심없었던 새내기 시절, 갑자기 기계과 친구한테 카톡이왔다. "너 혹시 ROS가 뭔지 아니..?" 뭐라도 도움을 주고 싶었지만 아무것도 모르는 새내기(강조)는 아무 도움도 줄 수 없어서 "로즈..?그게뭐야..?" 라고 답을 하고 말았던 기억이 있다..ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ(머쓱) 친구는 그냥 아..아니야! 하고 사라졌음 ㅎ 아무튼 그랬던 내가 3년 뒤 ROS 공부를 하게될 줄이야 세상만사 어떻게 될지 모르는게 人生이구만,,,, ======================================================= [ ROS란,, ] ROS는 Robot Op..
이진 탐색 트리 (Binary Search Trees) - 왼쪽 서브트리의 모든 값 bfs/dfs로 탐색, 찾은 노드+부모노드 함께 반환 -> 다른 함수에서 쓰..
큐 (Queue) in Python 선입 선출 (FIFO - First In First Out) 선형 자료구조. 한쪽 끝에서 밀어 넣고 다른 쪽 끝에서 뽑아서 씀. [큐의 자료구조 구현 ] 1. 배열(array)를 이용하여 구현 class ArrayQueue: def __init__(self): self.data = [] #빈큐 초기화 def size(self): #큐의 크기 return len(self.data) def isEmpty(self): #큐가 비어있는지 return self.size()==0 def enqueue(self,item): #데이터에 원소를 추가 self.data.append(item) def dequeue(self): return self.data.pop(0) #데이터 원소를 삭제(리턴) def peek(self)..
후위 표기법 (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 수식의 끝까지 왔을..