반응형
[백준] 1007번 벡터 매칭 - PYTHON vector matching

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

 

1007번: 벡터 매칭

평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속

www.acmicpc.net

문제
        평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속하는 모든 점은 한 번씩 쓰여야 한다.
        벡터 매칭에 있는 벡터의 개수는 P에 있는 점의 절반이다.
        평면 상의 점이 주어졌을 때, 집합 P의 벡터 매칭에 있는 벡터의 합의 길이의 최솟값을 출력하는 프로그램을 작성하시오.
    입력
        첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 구성되어있다.
        테스트 케이스의 첫째 줄에 점의 개수 N이 주어진다. N은 짝수이다. 둘째 줄부터 N개의 줄에 점의 좌표가 주어진다. N은 20보다 작거나 같은 자연수이고, 좌표는 절댓값이 100,000보다 작거나 같은 정수다. 모든 점은 서로 다르다.
    출력
        각 테스트 케이스마다 정답을 출력한다. 절대/상대 오차는 10-6까지 허용한다.
    알고리즘 분류
        수학
        브루트포스 알고리즘
 
import sys, itertools
input=sys.stdin.readline
T=int(input())
for _ in range(T):
    N=int(input()) # 점의 개수
    points = [] # 좌표의 리스트
    total_x,total_y = 0,0
 
    for _ in range(N):
        x,y = map(int,input().split())
        total_x +=x ; total_y += y # 모든 x의 합과 y의 합 저장
        points.append((x,y))
 
    comb = list(itertools.combinations(points, N//2))
    ans=3e5
    
    for c in comb[:len(comb)//2]: # len(comb)는 항상 짝수
        x1,y1 = 0,0
        for x,y in c:
            x1 += x ; y1 += y
        x2,y2 = total_x-x1,total_y-y1 # x와 y를 x1,y1과 x2,y2 두 그룹으로 절반 나누기
        
        hab_vector = ((x2-x1)**2 + (y2-y1)**2)**(0.5) # 절반 나눈 두 그룹간의 합벡터
        ans=min(ans,hab_vector)
    print(ans)

반응형
반응형

[백준] 1005번 ACM Craft - PYTHON  https://www.acmicpc.net/problem/1005

알고리즘 분류

 

출력

건물 W를 건설완료 하는데 드는 최소 시간을 출력한다. 편의상 건물을 짓는 명령을 내리는 데는 시간이 소요되지 않는다고 가정한다.

건설순서는 모든 건물이 건설 가능하도록 주어진다.

제한

  • 2 ≤ N ≤ 1000
  • 1 ≤ K ≤ 100,000
  • 1 ≤ X, Y, W ≤ N
  • 0 ≤ Di ≤ 100,000, Di는 정수

>> 소스 

import sys
from collections import deque
 
T = int(input(" 테스트 케이스 T 입력 : "))
 
for _ in range(T):
    N,K=map(int,input(" 건물수, 건설 순서 : ").split())#건물수, 건설순서규칙
    time=[0]+list(map(int,input(" 각 건물들의 건설시간 : ").split()))#건물들의 건설시간
    seq=[[] for _ in range(N+1)]#건설순서규칙
    inDegree=[0 for _ in range(N+1)]#진입차수
    DP=[0 for _ in range(N+1)]#해당 건물까지 걸리는 시간
 
    for _ in range(K):#건설순서규칙 저장
        a,b=map(int,input(" 건설순서규칙 : ").split())
        seq[a].append(b)
        inDegree[b]+=1
 
    q = deque()
    for i in range(1,N+1):#진입차수 0인거 찾아서 큐에 넣기
        if inDegree[i]==0:
            q.append(i)
            DP[i]=time[i]
 
    while q:
        a=q.popleft()
        for i in seq[a]:
            inDegree[i]-=1#진입차수 줄이고
            DP[i]=max(DP[a]+time[i],DP[i])#DP를 이용해 건설비용 갱신
            if inDegree[i]==0:
                q.append(i)
 
 
    ans = int(input(" W : "))
    print(DP[ans])

>> 결과

>> ./1005_ACM_Craft.py 
 테스트 케이스 T 입력 : 2
 건물수, 건설 순서 : 4 4
 각 건물들의 건설시간 : 10 1 100 10
 건설순서규칙 : 1 2
 건설순서규칙 : 1 3
 건설순서규칙 : 2 4
 건설순서규칙 : 3 4
 W : 4
120
 건물수, 건설 순서 : 8 8
 각 건물들의 건설시간 : 10 20 1 5 8 7 1 43
 건설순서규칙 : 1 2
 건설순서규칙 : 1 3
 건설순서규칙 : 2 4
 건설순서규칙 : 2 5
 건설순서규칙 : 3 6
 건설순서규칙 : 5 7
 건설순서규칙 : 6 7
 건설순서규칙 : 7 8
 W : 7
39
반응형
반응형

[백준] 1004번 어린완자 the Little Prince - PYTHON

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

 

1004번: 어린 왕자

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주

www.acmicpc.net

 

어린 왕자

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB 33687 14843 12410 45.196%

문제

어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다.

빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다.

위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행성계 진입/이탈 횟수를 구하는 프로그램을 작성해 보자. 행성계의 경계가 맞닿거나 서로 교차하는 경우는 없다. 또한, 출발점이나 도착점이 행성계 경계에 걸쳐진 경우 역시 입력으로 주어지지 않는다.

입력

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주어지며, 세 번째 줄부터 n줄에 걸쳐 행성계의 중점과 반지름 (cx, cy, r)이 주어진다.

출력

각 테스트 케이스에 대해 어린 왕자가 거쳐야 할 최소의 행성계 진입/이탈 횟수를 출력한다.

제한

  • -1000 ≤ x1, y1, x2, y2, cx, cy ≤ 1000
  • 1 ≤ r ≤ 1000
  • 1 ≤ n ≤ 50
  • 좌표와 반지름은 모두 정수

예제 입력 1 복사

2
-5 1 12 1
7
1 1 8
-3 -1 1
2 2 2
5 5 1
-4 5 1
12 1 1
12 1 2
-5 1 5 1
1
0 0 2

예제 출력 1 복사

3
0

예제 입력 2 복사

3
-5 1 5 1
3
0 0 2
-6 1 2
6 2 2
2 3 13 2
8
-3 -1 1
2 2 3
2 3 1
0 1 7
-4 5 1
12 1 1
12 1 2
12 1 3
102 16 19 -108
12
-107 175 135
-38 -115 42
140 23 70
148 -2 39
-198 -49 89
172 -151 39
-179 -52 43
148 42 150
176 0 10
153 68 120
-56 109 16
-187 -174 8

예제 출력 2 복사

2
5
3

 


T = int(input())
for _ in range(T):
    cnt = 0    
    x1,y1,x2,y2 = map(int, input().split())
    N = int(input())
    for i in range(N):
        cx, cy, cr = map(int, input().split())
        dist1 = (x1 - cx) ** 2 + (y1 - cy) ** 2
        dist2 = (x2 - cx) ** 2 + (y2 - cy) ** 2
        if (dist1 < cr**2 and dist2 > cr**2) or ( dist1 > cr**2 and dist2 < cr**2):
            cnt += 1
    print(cnt)

반응형
반응형

아니메컵 2쿨 시작까지 5일 02:19:24

sait2000 시작: 2023년 2월 11일 12:48 종료: 2023년 2월 11일 18:00

https://www.acmicpc.net/contest/view/939

 

아니메컵 2쿨

 

www.acmicpc.net

 

반응형
반응형

코딩시 표기법 '명명법'

   코딩 시 변수명, 클래스명, 함수명, View ID명 등등 이름 명명법에 쓰이는 표기법.

     대표적으로 3가지 "카멜 (camelCase) / 파스칼 (PascalCase) / 스네이크 (snake_case)"

 

1) 카멜 표기법 "camelCase"

  • 첫 문자 첫글자는 소문자로 표기, 그 이후 연결된 문자들은 첫글자 대문자로 표기
  • "단봉낙타 표기법" 
  • 변수명, 함수명에 사용
ex) 'helloWorld'	- 첫 문자 hello, 그 이후 문자 World
ex) 'personAgeNumber' - 첫 문자 person, 그 이후 문자 Age, Numbr

 

2) 파스칼 표기법 "PascalCase"

  • 모든 문자의 첫글자 대문자로 표기
  • "쌍봉낙타 표기법" 
  • 클래스명에 사용, 가끔 함수에도 사용
ex) 'HelloWorld'	- 첫 문자 Hello, 그 이후 문자 World
ex) 'PersonAgeNumber' - 첫 문자 Person, 그 이후 문자 Age, Numbr

 

3) 스네이크 표기법 "snake_case"

  • 모든 문자의 첫글자 소문자로 표기, 각 문자들을 '_' (언더바)로 이어서 사용 
  • 변수명, 함수명, 데이터 타입, 네임스페이스 등에 사용
ex) 'hello_world'	- 첫 문자 hello, 그 이후 문자 world
ex) 'person_age_number' - 첫 문자 person, 그 이후 문자 age, numbr
 
 
 
.

 

 

 

반응형
반응형

1. 카멜 표기법(camelCase) 
    "camelCase"
    "단봉낙타" 표기법[1][2]
    각 단어의 첫문자를 대문자로 표기하고 붙여쓰되, 맨처음 문자는 소문자로 표기함
    띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식
    예시: backgroundColor, typeName, iPhone


2. 파스칼 표기법(PascalCase)
    "PascalCase"
    첫 단어를 대문자로 시작하는 표기법
    예시: BackgroundColor, TypeName, PowerPoint

 


* 각종 네이밍 룰(Naming Rule)



1. 카멜 케이스 (Camel Case)

 - 흔히 접하는 표기법. 가장 처음에 오는 문자는 소문자로 표기하고, 각 단어의 첫글자는 대문자로 표기

 - 예) deleteNumber, insertNumer





2. 파스칼 케이스 (Pascal Case)

 - 쌍봉낙타 표기법. 각 단어의 첫글자를 대문자로 표기

 - 가장 처음에 오는 문자도 대문자로 표기하는 점에서 카멜 케이스와 차이점

 - 예) DeleteNumber, InsertNumber





3. 스네이크 케이스 (Snake Case)

 - 각 단어의 사이에 언더바를 삽입

 - 예) delete_number, insert_number





4. 헝가리언 표기법 (Hungarian notation)

 - 데이터의 타입을 의미하는 접두어를 붙이는 표기법

 - 마이크로소프트의 찰스 시모니가 제안했으나 현재는 MS조차 공식 가이드라인에서 사용하지 말라고 권고하는 비운의 표기법

 - 예) nCnt, m_empName

반응형
반응형

제주시, ‘웹으로 만나는 코딩과 인터넷’강의 개최

 

2019년 <재미난 제주>
AI 시대 독립학습자를 위한 첫번째 모임

이끔이 : 이고잉 (생활코딩,오픈튜토리얼스) 강두루 (오픈튜토리얼스, 수리할 권리)

장소: 제주시 청소년 수련관 (사라봉 동길 21-1)
시간 : 2019년 4월 27일 토 3시 ~5시30분

---------------------------------------------------------------------------------------

 

1.수업내용

정보기술은 코딩과 인터넷으로 이루어져 있다고 해도 과언이 아닙니다. 코딩으로는 콘텐츠를 만들고, 인터넷으로는 콘텐츠를 실어 나릅니다. 이 두 기술의 접목으로 만들어진 대표적인 기술이 바로 웹입니다. 웹이 없다면 뉴스도 검색엔진도 없습니다.

웹사이트를 만들어보는 과정을 통해서 코딩이 무엇인지, 인터넷은 어떻게 동작하는지를 살펴볼 것입니다. 이 수업이 끝나고 나면 코딩이 무엇인지, 인터넷은 무엇인지 알게 될 것입니다. 아울러서 정보기술이 고도로 발전한 시대에 공부방법은 어떻게 달라져야 하는가에 대해서도 함께 생각해보는 시간이 될 것입니다. 나만의 웹사이트를 갖게 되는 것은 덤입니다.

2.참여자초등학교 고학년 이상이면 누구나 참여할 수 있습니다.

3. 준비물노트북을 지참해오시면 실습에 참여할 수 있습니다만, 실습을 하지 않아도 되는 수업입니다. 온라인으로 제공되는 동영상 강의를 통해서 혼자서도 따라할 수 있습니다.
https://opentutorials.org/course/3084

제주시에서는 청소년 및 청소년 교육에 관심 있는 성인을 대상으로「웹으로 만나는 코딩과 인터넷」강의를 다가오는 4월 27일(토요일) 오후 3시에 제주시청소년수련관(제주시 사라봉동길 21-1)에서 개최한다.
이번 교육은 정보기술이 고도로 발달한 현 시대에서 청소년들에게 어떻게 공부해야 하는지 안내하고, 4차 산업혁명 시대에 대한 새로운 접근방법을 제시하기 위해 개최된다. 수업 참가자들은 웹사이트를 직접 제작하는 과정을 통해 코딩이 무엇인지 알아보고, 인터넷과 웹이 어떻게 동작하는지 관찰하게 된다.

이번 강의는 오픈튜토리얼스(컴퓨터 프로그래밍 교육 커뮤니티) 운영진인 이고잉, 강두루가 오후 3시부터 5시 반까지 약 2시간 반 동안 진행할 예정이다.
이고잉은 2011년에 생활코딩을 창시하여 일반인을 대상으로 프로그래밍을 무료로 알려주는 수업을 진행하고 있으며, 강두루는 수리할 권리를 통해 사용자 본인이 직접 핸드폰, 기계들을 수리함으로써 물건의 작동원리와 역사를 깨우치게 하는 수업을 진행하고 있다.

초등학교 4학년 이상 및 교육에 관심 있는 학부모, 시민이면 누구나 무료로 참석할 수 있으며, 수업 참여시 본인 노트북을 지참하는 것이 좋다. 참가신청은 구글 신청서링크(https://bre.is/VIGLPAnGG)를 통해 4월 26일(금)까지 받고 있으며, 본 수업에 관한 문의사항은 제주시청소년수련관(728-3483)으로 전화하면 된다.
제주시에서는 청소년들이 앞으로도 시대를 통찰하고 시대변화에 대응하는 발판을 마련할 수 있도록 다양한 프로그램과 강의들을 개최하여 제공할 계획이다.

https://opentutorials.org/course/3084

 

WEB1 - HTML & Internet - 생활코딩

--- 우리는 지금부터 코딩 웹 인터넷 컴퓨터라는 거대한 주제에 대한 탐험을 시작할 거예요. 이 여행을 시작하기에 앞서서 한가지 준비가 필요한데요. 바로 우리들의 상상력입니다. 지금부터 여러분은 자신을 남의 문제를 통해서 코딩을 배우려는 학생이 아니라 나의 문제를 코딩으로 해결하려는 엔지니어라고 상상해주세요. 그럼 어떤 문제를 해결하면 좋을까요? 글쎄요. 각자가 해결하고 싶은 문제가 다를 거예요. 또 해결하고 싶은 문제가 아직 없을지도 모르고요. 그래서

opentutorials.org

 

 

 

 

...

반응형
반응형
우당도서관 도서대여
윤태호의 오리진 1,2
내가 바로 코딩스타
로봇공화국에서 살아남는 법
문경수 탐험가 북콘서트가 4월 14일.

반응형

+ Recent posts