반응형

 

 

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

# push X: 정수 X를 큐에 넣는 연산이다.
# pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
# size: 큐에 들어있는 정수의 개수를 출력한다.
# empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
# front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
# back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

def push(list, a) :
    list.append(a)

    return list

def pop (list) :
    if not list:
        print(-1)
    else :
        print(list[0])
        del(list[0])

    return list

def size(list) :
    return len(list)

def empty(list) :
    if not list:
        return 1
    else :
        return 0

def front(list) :
    if not list:
        return -1
    else :
        return list[0]

def back(list) :
    if not list:
        return -1
    else :
        return list[-1]

i = int(input())

list = []
for _ in range(i) :
    cmd = input()
    cmd = cmd.split(' ')

    if cmd[0] == 'pop':
        pop(list)
    elif cmd[0] == 'push':
        push(list, int(cmd[1]))
    elif cmd[0] == 'front':
        print(front(list))
    elif cmd[0] == 'back':
        print(back(list))
    elif cmd[0] == 'empty':
        print(empty(list))
    elif cmd[0] == 'size':
        print(size(list))

-> 이 방식으로 제출하면 채점시 시간 초과 오류가 뜬다

# 시간초과를 해결하기 위한 방안

0. switch case 교체

파이썬에서는 지원되지 않는 구문이므로 포기

1. 함수 삭제

사실 해당 내용에서의 함수는 큰 의미가 없어, 없어도 크게 영향을 받지 않음

2. input 변경

sys.stdin import

 

 

# 변경후

from sys import stdin

list = []
for _ in range(int(stdin.readline())) :
    cmd = stdin.readline().split()
    
    if cmd[0] == 'pop':
        if list : print(list.pop(0))
        else : print (-1)
    elif cmd[0] == 'push':
        list.append(cmd[1])
    elif cmd[0] == 'front':
        if not list: print(-1)
        else : print(list[0])
    elif cmd[0] == 'back':
        if not list: print(-1)
        else : print(list[-1])
    elif cmd[0] == 'empty':
        if not list: print(1)
        else : print(0)
    elif cmd[0] == 'size':
        print(len(list))
반응형
반응형

문제 출처 : https://www.acmicpc.net/problem/4153

 

각 세 변의 입력 순서에 대한 조건이 없으므로, 세 변의 길이가 모두 가장 긴 변일때의 케이스를 고려 해야 함

while (1) :
    a, b, c = map(int, input().split())
    if a == b == c == 0 : break

    if c ** 2 == (a**2 + b** 2) or b** 2 == (a**2 + c** 2) or a**2 == (c**2 + b**2): print("right")
    else : print("wrong")

 

반응형
반응형

 

문제 출처 : https://www.acmicpc.net/problem/1002

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

# 접근 방법

두 터렛 사이에서 감지 할 수 있는 적의 범위 중 두 터렛이 동시에 감지할 수 있는 적의 위치의 개수를 구함

-> 터렛이 감지할 수 있는 범위를 원으로 생각한다면 두 원이 동시에 감지 할 수 있는 적의 위치의 개수는 두 원의 교점이 된다

-> 두 원의 교점을 구하는 프로그램으로 단순화하여 생각할 수 있음

 

# 두 원의 교점에 대한 경우의 수

1) 무한대 : 두원이 동일

2) 1 : 내접, 외접

3) 2 : 두 원의 거리가 각 원의 반지름의 합 보다 작은 경우

4) 0 : 두 원의 거리가 각 원의 반지름의 합 보다 큰 경우 / 원의 중심이 같고 반지름의 크기가 다른 경우

 

# 코드

n = int(input()) 

for i in range(n) :
    x1, y1, r1, x2, y2, r2 = map(int, input().split())
    d = ((x1 - x2)**2 + (y1 - y2)**2)**(1/2)

    if d == 0 and r1 == r2 : 
        print(-1)
    elif d == (r1 + r2) or d == abs(r1-r2) : 
        print(1)
    elif d > abs(r1-r2) and d < (r1 + r2) : 
        print(2)
    else : 
        print(0)

 

반응형
반응형

맥북에 파이썬 쟝고 설치하는 방법


1. 파이썬 설치 버전 확인

- 쟝고는 기본적으로 파이썬 3부터 지원을 해준다

- 터미널을 열고 파이썬 버전 확인을 한다

 python --version


- 이후 파이썬 버전이 2.xxx 버전이라면 파이선 3 최신버전을 설치한다.

- 2.xxx 버전인 이유는 맥에서 기본적으로 파이썬을 제공해주는 버전이 먼저 나와서 그렇다.


- 버전확인 명령어는 python3 --version 으로 확인하면 된다.


2. pip 명령어를 이용하여 장고 설치

- 이전단계에서 python 버전 확인시 python3 --version 으로 확인한 사람은 pip3 명령어를 이용하여 설치한다

- 명령어 : pip install django(pip3 install django)




3. 테스트 프로젝트 생성

- django-admin startproject 프로젝트이름

4. 생성 프로젝트로 이동, 서버 실행

- python manage.py runserver

- python3 manage.py runserver (python3 실행하시던 분은 python3으로 계속 하시면 됩니다.)



5. 인터넷 실행 및 서버 확인

- 이전 까지의 단계로 서버를 실행할 수 있는 상황이 되었음

- 인터넷 브라우저를 열고 주소창에 localhost:8000 혹은 127.0.0.1:8000 으로 접속

 - 이 화면이 뜰 때 서버가 정상적으로 돌아가고 있다는 것임

- 서버 종료시에는 터미널창에서 Command +C(Ctrl + C) 입력하면 종료 됨

- 종료하고 나서 해당 브라우저 새로고침하면 이런식으로 연결 실패 화면 나옴

- 서버가 정상적으로 실행되고 있지 않을 경우에도 마찬가지임


반응형

'Python > 자료' 카테고리의 다른 글

파이썬 Python] 인코딩 및 한글 지원  (0) 2019.02.24
파이썬 Python] 한글 지원(ver: 2.XX)  (0) 2019.02.16
반응형

테이블은 크게 3개로 구성할 예정이다.

1. 회원 정보 테이블

2. 게시글 테이블

3. 댓글 테이블 - (기능구현 할지는 모르지만 설계는 할것임)


회원정보 테이블 : User

 ColumnName

 DataType

 PK 

 Null?  

 Default 

 UserId

 VarChar(20) 

 Y 

 N 

 

 Password

 Password 

 N 

 N 

 

 Name 

 Varchar(50) 

 N 

 N 

 

 EMail 

 Varchar(100) 

 N 

 Y 

 

 AdminYN 

 Char(1) 

 N 

 N 

 N 


게시글 테이블 : Board

  ColumnName

 DataType 

 PK 

 Null? 

 Default 

 BoardId 

 Integer 

 Y 

 N 

 

 Who 

 Varchar(20) 

 N 

 N 

 

 TimeStamp 

 Char(15) 

 N 

 N 

 YYYYMMDD 24HHMMSS 

 Content

 Varchar(1024) 

 N 

 N 

 

 CommentCnt

 Integer 

 N 

 N 

 0 


댓글 테이블 : Comment

  ColumnName

 DataType 

 PK 

 Null? 

 Default 

 CommentId

 Integer 

 Y 

 N 

 

 BoardId 

 Interger 

 N 

 N 

 

 Who 

 Varchar(20) 

 N 

 N 

 

 TimeStamp 

 Char(15) 

 N 

 N 

 YYYYMMDD 24HHMMSS 

 Content 

 Varchar(500) 

 N 

 N 

 



반응형
반응형

#1 에서는 간단하게 어떤 걸 만들지에 대해 대략적으로만 적어놨었는데

들어갈 기능이랑 상세 정의 및 분석정도 해보려고 함


1. 회원 관리

 1) 로그인

 - 로그인에 필요한 정보 : Id, Password

 - 고려사항 : 

   대부분의 사이트 및 어플 등의 경우에는 로그인 실패가 연속으로 특정 횟수 이상 틀리게 되면 잠기거나 비밀번호를 초기화해준다거나 하는 기능이 있다. 이 기능을 구현할 것인가에 대한 고려는 좀 더 해봐야 겠음 (이때 필요한 정보 : 틀린횟수, 계정 잠금 상태 등등) 

2) 회원 가입 

- 필수 정보 : Id, Password

-  부가 정보 : 이름, 이메일 등

3)  회원 탈퇴

- 필요 정보 : Id

- 고려 사항 : 탈퇴할 계정에 대해 복구를 시킬 수있게 만들것인가 (이때 필요한 정보 : 계정 상태(유효, 삭제)) 

4) 관리자 계정

- 고려 사항 : 관리자 아이디를 지정해서 사용할 것인가 / 특정 아이디에 관리자 권한을 부여해줄 것인가

-> 사용자 정보를 관리할 수 있는 table 필요 (user)


2. 게시판

  (글 쓰기, 삭제, 수정)

1) 글쓰기

- 카테고리 분류 가능 필요한가 : 일단 보류

- 사진, 동영상 업로드 허용 여부


사실 사진, 동영상 업로드는 jsp 에서 질릴만큼 해봤다... 간단하게 만들 개인 프로젝트에서 그런것까지 하기에는 시간이 너무 오래걸리지 않을까..??라는 생각도 들고 할줄 아는 기능인데 굳이 해봐야 하나라는 생각도 듦

-> 사진 동영상 업로드 허용 여부 (일단 보류 : 허용 안함)


- 저장시 필요 데이터 : 글 번호, 작성자, 내용, 작성 시간


2) 삭제

- 기본적으로는 작성자만 삭제 가능

- 관리자는 작성자가 아니어도 삭제 가능


- 필요 데이터 : 글번호, 삭제 요청자 아이디, 관리자 여부

3) 수정

- 작성자만 수정 가능

- 수정한 이후 수정 전 내용을 볼 수 있게 할 것인가 : 굳이 볼 필요 없음 있을 경우 글 번호별로 상태 변화시마다 데이터 한줄 씩 추가



Board(게시판) 테이블 필요

- 필요 데이터:

글 번호, 작성자, 작성시간, 내용


3. 댓글 기능

1) 댓글 쓰기

2) 댓글 삭제

3) 수정


- 고려사항 : 게시판과 동일

- 댓글 기능은 다 만들고 나서 시간 남을 경우 개발하려고 함

- 댓글 관련 된 테이블 필요

- 필요 데이터 : 글번호, 댓글 번호, 작성자, 작성시간, 내용 


반응형
반응형

파이썬을 이용해서 웹 게시판을 하나 만들어 보려고 한다.

개발환경을 아직 다 못정했다

일단은 로컬에서만 돌아갈 수 있게 할 예정이며 조금씩 확장 시켜 나가볼 생각이다.

얼마나 걸릴려나......


지금까지 정리된 내용으로만 작성하고 이후 내용 추가 예정


1. 개발 환경

 - 개발 언어 : Python, html

- 개발 툴 : Pycharm

- Django 사용

- DB : h2 사용 예정(h2 db가 파이참에 연결 시킬 수 있는 커넥터가 있는지는 잘 모르겠음.. 안되면 SQLite로 변경 예정)


2. 기능

- 회원 관리

  (로그인, 회원가입, 회원 탈퇴, 관리자 계정)

- 게시판

  (글 쓰기, 삭제, 수정)

- 댓글 기능

  (댓글 쓰기, 삭제, 수정)


3. 개발 기간

- 미정

  장기로 잡고 길게 가고 싶은 마음이랑 길게 하다가 늘어질꺼 같은 느낌이랑 반반이라 정확히 못정하겠다...

  1차적으로는 메인 기능인 게시판 먼저 생성하고 이외 기능을 구성할 예정이긴 함

  늦어도 상반기 안에는 끝내자



6월 말까지 끝낼 수 있을지는 모르겠다..

요즘 하고 싶은것도 많고 해야될것도 많고 회사 일 자체도 바빠서;;

반응형
반응형

파이썬 2.xx 버전은 기본적으로 Ascii Code 형식이다.

3.7 버전까지 나온 마당에 굳이 2.x 버전을 쓰진 않겠지만..


컴퓨터에 기본으로 깔려있던 버전을 썼는데 그게 구버전이라면 에러를 내보낸다.....

틀린게 없는데 에러가 난다.....


ascii code는 한글을 지원할 수 없어서 생기는 인코딩 / 디코딩 문제라 해결 방법 정리해봄



해결 방법

1) #-*- encoding: utf-8 -*-

 - 파이썬 파일 맨위에 해당 줄을 입력하면 에러가 나지 않음

 - ascii Code를 UTF-8로 변환해서 인코딩해준다는 내용


2) setdefaultenconding() 설정

import sys 
reload(sys) 
sys.setdefaultencoding('cp949')


cp949로 기본 인코딩을 처리한다는 의미인데 cp949가 euc-kr이랑 똑같다고 생각하면 됨

cp949 대신 utf-8하면 에러가 난다는 이야기가 있다....

실제로 해보지는 않음


3) 출력할 문자열을 인코딩해서 사용

s = "안녕하세요"
print(type(s))
s2 = s.encode('utf-8')
print(type(s2))
s3 = u'안녕하세요'
print(type(s3))

이런 식으로 사용할 경우 다음과 같은 결과가 나오게 됨

<class 'str'>
<class 'bytes'>
<class 'str'>

물론 가장 좋은 방법은 최신 버전 언어 쓰기...


최신 버전 언어가 지원되는것도 많고 쓰기 편하다


3부터는 기본 인코딩 방식이 ascii 에서 UTF-8로 바꿔서 저런거 안해도 한글 입력하면 다 된다.


반응형

'Python > 자료' 카테고리의 다른 글

파이썬 Python] Django 설치(OS X)  (1) 2019.03.13
파이썬 Python] 한글 지원(ver: 2.XX)  (0) 2019.02.16

+ Recent posts