분류 전체보기

·백준
https://www.acmicpc.net/problem/9935 접근방법스택 문제이기 때문에 Stack클래스를 사용하는 방향으로 문제에 접근했다.스택에 입력된 문자열의 문자를 하나씩 넣기넣을 때마다 조건 확인조건 : 폭발 문자열의 마지막 글자와 같은지, 스택이 폭발 문자열의 길이보다 긴지 조건에 맞는다면 폭발 문자열인지 확인맞다면 폭발 문자열을 스택에서 제거아니라면 제거하지 않고 1번으로 돌아가기 참고사항 N : 입력 문자열의 길이M : 폭발 문자열의 길이1차 시도 : Stack 사용 - O(N*M)결과 : 시간초과import java.util.Scanner;import java.util.Stack;public class Main { public static void main(String[] ar..
·백준
N과 M을 둘다 int로 선언하면 안되는 이유문제에서 설정한 N과 M의 범위는 [-2,000,000,000 ≤ N, M ≤ 2,000,000,000]즉, int의 범위에 속한다. 하지만 주의해야 할 점은, N과 M이 사칙연산을 한다는 점이다.+,- 연산으로 인해 -40억,+40억과 같은 int의 범위를 초과한 연산결과가 나올 수 있다는 소리다. 하지만, 문뜩 나는 이런 궁금증이 생겼다.어차피 변수 N, M에 저장된 값은 변하지 않을텐데 왜 int로 하면 안되지? 결과값만 long으로 저장하면 안되나?Math.abs에서 N-M을 알아서 long으로 봐줄 수는 없나?Math.abs함수의 동작 방식 뭐지?그래서 구글링한 결과 N과 M을 둘다 int로 선언하면 안되는 2가지의 구체적인 이유를 찾았다.첫째, N과..
·독서 후기
왜 읽게 됐는지 - 게으름 중독5개월의 기숙 교육이 끝나고 서울로 올라왔다. 기숙을 하면서는 하루 평균 10시간은 빼먹지 않고 매일 공부했었는데, 올라오자마자 과거로 회귀했다. 빈둥이가 됐다는 말이다. 해야 할 일들은 미루고 계획은 세우지도 않고, 하고 싶은 것들만 하는 생활을 시작했다. 집에서 먹고, 자고, 놀고를 반복하는 게으른 생활이었다. 그런 생활이 1주일이 넘어갈 때쯤, 하도 앉고 누워있다 보니 허리가 아파왔다. 그리고 그때 처음으로 이런 생각이 들었다."아 이건 좀 아닌데" 마치 알콜 중독처럼 게으름에 중독되어 건강이 나빠지는 기분이었다. '게으름 중독' 현재 내 상태를 가장 잘 나타내는 말이다. 그리고 내가 아는 상식선에서 무엇이든 중독된 사람의 삶은 그리 행복하지는 않다.  지금까지 부지런..
·CS
기본적인 개념좋은 설계를 위한 객채 지향 원칙 묶음이다. 그저 원칙이기 때문에 OOP(객체 지향 프로그래밍)을 지원하는 모든 언어에 원칙을 적용 가능하다. 각 원칙은 따로 적용해야 하는 순서는 없고, 서로 다른 문제를 해결하기 위해 만든 원칙이기 때문에 문제가 없다면 원칙을 억지로 적용할 이유도 없다.좋은 설계란?코드를 확장하고, 유지보수 관리하기 쉬운 구조복잡성을 제거해 가독성이 좋고, 리팩토링이 쉬운 구조그럼으로, 새로운 요구사항이나 변경사항이 있을 때 영향을 받는 범위가 적고, 개발 생산성이 높은 구조(좋은 설계란 이야기할 거리가 많은 주제입니다. 위 내용을 좋은 설계에 대한 개인적인 의견으로 받아들여 주시면 감사하겠습니다.)SRP (Single Responsibility Principle) - 단..
·SW 정글 일지
진짜 드럽게 힘들었던 핀토스 주차가 끝나간다... 지금까지 프로젝트를 하면서 느꼈던 것들을 마구잡이로 내뱉으며 이번 프로젝트를 마무리하려고 한다. 정신이 나가있어서 무슨 글을 쓸지는 나조차 모르고, 나중에 보면 이불킥을 갈길지도 모르지만 일단 써보자..!범부가장 처음 프로젝트를 진행하면서 느낀 건, 잘하는 사람들이 정말 많다는 것이다, 잘하는 사람들은 진짜 톡 튀어나온 것처럼 눈에 띄는 게 느껴졌다. 나는 그저 한낱 범부에 지나지 않다는 걸 새삼 느꼈다. ( 그래도 뭐 내가 하고 싶은 거니까 그것과는 상관없이 계속해야징 ㅎㅎ)디버그는 엉덩이로핀토스를 진행하면서(특히 프로젝트 3) 디버그에 가장 많은 시간을 보냈다. 디버그는 마치 엄마의 곰탕 같다... 처음에는 맛있지만 일주일 삼시세끼 내내 먹고 있으면 ..
·SW 정글 일지
OS별 페이지 테이블 엔트리(PTE) 개수의 차이Page Table의 크기 : page단위로 할당되고 pintos에서는 page의 크기를 4KB로 하고 있기 때문에 4KB(2¹²Byte)다.Page Table Entry의 크기 : 포인터의 크기를 가지기 때문에 각 운영체제 별로 다르다.32bit OS에서의 포인터 크기 : 4byte(2²)64bit OS에서의 포인터 크기 : 8byte(2³)PTE에 들어갈 수 있는 PTE의 개수는 NPage Table의 크기를 Page Table Entry의 크기로 나눈 값N = sizeof(PT)/sizeof(PTE)따라서 OS별로 PT에 들어가는 PTE의 개수는 다음과 같다.32bit는 2¹²/2² = 1024개64bit는 2¹²/2³ = 512개데이터와 물리, 가상..
·SW 정글 일지
레지스터레지스터의 종류general registerindex registerpointer registerflag register segment registerGeneral RegisterEAX : Extend Accumulator Register산술 연산자 레지스터함수의 return값 지정EBX : Extend Base Register간접 번지지정에 사용산수/변수를 저장ECX : Extend Counter RegisterREP(반복 레지스터)에 얼마나 반복할 것인지 저장반복(Loop)에서 반복횟수 수행EDX : Extend Data RegisterEAX를 보조Index RegisterESI : Extend Source Index복사,비교를 할 경우 출발지 주소 저장EDI : Extend Dest..
·SW 정글 일지
Pintos project의 시작드디어 OS프로젝트을 시작하는 주차가 됐다. 이번 프로젝트를 진행하면서 이전의 다른 프로젝트들과는 확실히 다른 느낌을 받았다. 난이도는 물론 더 어려웠고, 함수의 진행을 따라가기만 했는데도 머리가 어지러웠다. 하지만 그런 난이도적인 차이보다 OS 프로젝트의 차별점으로 느껴진 것은 확실히 하드웨어와 더 가까운 거리에서 코딩을 한다는 것이었다.이전의 내가 알던 코딩은 함수내에서 함수를 호출하는 것으로 진행이 이루어졌지만, 이번 프로젝트에서는 그 뿐만 아니라 레지스터의 값을 변화시키는 방법으로 진행의 흐름을 바꾸는 내용이 포함되어있었다.그리고 그 레지스터 값을 직접적으로 다루는 코드는 프로젝트 내에 어셈블리어로 작성되어 있었고, 그 코드를 이해하는 것이 다른 프로젝트와 가장 큰..
forrest13
'분류 전체보기' 카테고리의 글 목록