지금 머리가 안돌아가서 너무 막 짠것 같음

내일 다시 보고 더 좋은 방법 없나 찾아봐야겠음

내가 찾은 방법은 3개의 좌표중 혼자 다른 좌표를 찾아 넣어주는 방법이었음

직사각형이 뷰포트에 평행하다면 좌표들도 뷰포트에 평행하니까



'알고스팟 > 튜토리얼' 카테고리의 다른 글

[소스코드/C++] XHAENEUNG  (0) 2016.03.06
[소스코드/C++] URI  (0) 2016.03.03
[소스코드/C++] HOTSUMMER  (0) 2016.03.01
[소스코드/C++] CONVERT  (0) 2016.03.01
[소스코드/C++] MISPELL  (0) 2016.02.29


출력값을 올바르게 출력하지 않아 틀린 바보같은 짓을 했다..

문제를 꼼꼼히 읽고 풀자 제발 ㅠㅠㅠㅠ

처음에 답과 입력한 문자열 비교하는 것을 아스키코드의 합으로 생각했었는데 겹칠 가능성이 너무 농후해서 접었음

알파벳 갯수만큼의 배열을 생성해서 하나하나 체크하는 것이 더 나았다고 생각함

배열 초기화 방법이 for밖에 생각이 안났었는데 {0, }방식이 있다는 것을 까먹어서 삽질할 뻔했음

숫자를 영어로 변환하는 함수도 default를 넣지 않아 에러가 났었음

계산시 <0, >10 을 고려하지 않아서 생긴 실수

너무 어렵게 생각하지 말고 차근차근 생각할 것

'알고스팟 > 튜토리얼' 카테고리의 다른 글

[소스코드/C++] DRAWRECT  (0) 2016.03.06
[소스코드/C++] URI  (0) 2016.03.03
[소스코드/C++] HOTSUMMER  (0) 2016.03.01
[소스코드/C++] CONVERT  (0) 2016.03.01
[소스코드/C++] MISPELL  (0) 2016.02.29
  • 공간 복잡도(space complexity) : 프로그램을 실행시켜 완료하는데 필요한 메모리의 양(RAM관련)
    • 고정 부분
      • 프로그램의 입출력 특성과 관계 X - 횟수, 크기 등에 상관 X
      • 보통 명령어 공간, 단순 변수, 일정 크기의 요소 변수, 상수들을 위한 공간을 포함
    • 가변 부분
      • 풀려고 하는 문제의 인스턴스에 의해 크기가 결정되는 변수가 필요로 하는 공간과, 참조된 변수가 필요로 하는 공간, 순환 스택 공간으로 구성
    • 공간복잡도 S = C(상수) + Sp(인스턴스 특성)
    • Sp는 함수가 얼마나 콜되는가에 따라 달라지는 것 같음
    • 변수가 여러개 있다고 해서 Sp가 올라가는 것은 아님
    • 순환의 깊이에 따라 Sp가 올라갈 수도 내려갈 수도 있음


  • 시간 복잡도(time complexity) : 프로그램을 실행시켜 완료하는데 필요한 컴퓨터 시간(CPU관련)
    • 프로그램에 소요되는 시간은 컴파일 시간 + 실행 시간 - SUM(명령어들의 수행시간 * 명령어들이 몇번이나 실행됐는지 센 결과)
    • 컴파일 시간은 인스턴스 특성과는 무관하며 컴파일된 프로그램을 재컴파일 하지 않고 여러번 수행된다는 가정 하에 무시 가능 - 프로그램 실행 시간만 고려해도 OK
    • 각 단계수(실행 횟수)를 고려하여 시간 복잡도를 계산
      • 주석 : 단계수 0
      • 선언문 : 변수/상수 정의문, class, struct, union, template, 접근자, 함수 타입 결정문 등은 단계수 0
        • 비실행문이거나, 관련 함수가 기동되는 비용에 포함되므로
      • 산술식 및 지정문
        • 산술식 : +, -, *, / 등은 단계수 1, 다만 함수 호출을 포함하는 산술식은 예외
        • 지정문 : = 등은 단계수 1, 다만 인스턴스 특성의 함수를 대입하는 경우 인스턴스 특성과 같은 단계수를 가짐
      • 반복문 : 제어 부분만 단계수 고려, 반복문이 실행되는 횟수
      • 스위치 명령문 : 수행되는 식의 단계수와 동일, 각 조건의 비용은 자신의 비용 + 앞서 나온 모든 조건의 비용
      • if-else문 : 각 수행문에 따라 단계수 할당
      • 함수 호출
        • 매개변수가 인스턴스 특성에 의존하는 값이 아니라면 단계수 1, 의존하는 값이라면 값 인자의 크기가 단계수, 순환적이라면 지역변수도 고려
      • 메모리 관리 명령문 : new, delete, sizeof 등 단계수 1
        • new와 delete의 경우 생성자와 소멸자를 묵시적으로 호출할 수 있는데 이때는 함수 호출과 같은 방법으로 계산됨
      • 함수 명령문 : 단계수 0
      • 분기 명령문 : continue, break, goto, return 등 단계수 1, return 반환값; 일 경우 반환값이 인스턴스 특성의 함수라면 단계수는 반환값과 같음


밑의 예제를 통해 시간 복잡도를 조금 쉽게 이해하며 계산해보기

각 라인당 몇번 실행되는지 구한 후 다 더하면 OK



내가 변화시키고 싶은 특성들을 정해두고 그 특성에 맞춰 시간 복잡도를 계산하는 것이 좋음


  • 균형 분기점(break even point) : 시간 복잡도가 큰 A와 작은 B가 있을 때 A가 B보다 빠를 수 있는 조건이 되는 n이 존재함. 그 때의 n이 균형 분기점
  • 점근 표기법
    • Ο(빅오) : 알고리즘 실행 시간의 상한을 나타냄 - 최악의 경우
    • Ω(오메가) : 알고리즘 실행 시간의 하한을 나타냄 - 최고의 경우
    • Θ(세타) : 알고리즘 실행 시간의 평균을 나타냄 - 평균의 경우


+ Recent posts