chatGPT API 호출시, json 형태로 응답받는 방법은 2가지가 있다.

 

방법1) JSON Mode

 

- 사용방법 : API 호출시, response_format: { type: "json_object" } 으로 설정

- 장점 : 간단하고 직관적임 / 적용 가능한 model 이 다양함 (gpt-3.5-turbo, gpt-4-* and gpt-4o-* models)

- 단점 : 매우 간헐적으로 json 형태를 보장하지 못하는 경우 발생 / 특정 key 의 존재나 type 을 항상 보장하지 않음

- 가장 기본적으로 많이 알려진 방법으로,  ChatGPT가 항상 유효한 JSON 형식으로 응답하도록 강제하는 설정임.

 

import openai

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo-1106",
    response_format={ "type": "json_object" },
    messages=[
        {"role": "system", "content": "You are a helpful assistant designed to output JSON."},
        {"role": "user", "content": "Give me a JSON object with keys for 'name' and 'age' for a fictional person"}
    ]
)

print(response['choices'][0]['message']['content'])
#출력예시
{
  "name": "Alice Johnson",
  "age": 28
}

 

방법 2) Structured Outputs ( 2024 기준 새로운 방법 )

 

- 사용방법 : response_format: { type: "json_schema", json_schema: {"strict": true, "schema": ...} }

- 장점 : 항상 동일한 구조로 데이터 response 받을 수 있음 / required 항목을 통해 특정 필드가 반드시 포함되도록 할 수 있음 / 매우 구체적으로 데이터 type 정의 가능 / 복잡한 중첩 구조 쉽게 정의 가능 / 더 엄격하게 json 구조 명시 가능

- 단점 : 설정 복잡함 / 최신 model version 에만 적용가능 ( 2024.10 기준 gpt-4o-mini, gpt-4o-2024-08-06, and later 모델만 적용가능) 

- API 호출시, 특정 함수를 정의하고 정의한 함수의 파라미터에 맞는 구조화된 데이터를 반환받는 방식

 

import openai
import json

# OpenAI API 키 설정
openai.api_key = 'your-api-key-here'

def get_movie_info(movie_title):
    response = openai.ChatCompletion.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": "You are a helpful assistant that provides movie information."},
            {"role": "user", "content": f"Give me information about the movie '{movie_title}'."}
        ],
        # 함수정의(이 부분에서 원하는 데이터 구조를 정의함. 각 필드의 타입과 설명을 명시하고, 필수 필드를 지정)
        functions=[ 
            {
                "name": "provide_movie_info",
                "description": "Provide information about a specific movie",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "title": {"type": "string", "description": "The title of the movie"},
                        "director": {"type": "string", "description": "The name of the movie's director"},
                        "release_year": {"type": "integer", "description": "The year the movie was released"},
                        "genres": {"type": "array", "items": {"type": "string"}, "description": "List of genres for the movie"}
                    },
                    "required": ["title", "director", "release_year", "genres"]
                }
            }
        ],
        # 함수 호출 지정 (이 부분에서 ChatGPT에게 미리 위에서 정의한 함수를 호출하도록 지시함)
        function_call={"name": "provide_movie_info"} 
    )

    # 함수 호출 결과 추출 (API response 결과를 추출하고 JSON으로 파싱)
    function_args = json.loads(response['choices'][0]['message']['function_call']['arguments'])
    return function_args

# 사용 예시
movie_title = "The Matrix"
movie_info = get_movie_info(movie_title)
print(json.dumps(movie_info, indent=2))
# 실행결과
{
  "title": "The Matrix",
  "director": "The Wachowskis",
  "release_year": 1999,
  "genres": ["Science Fiction", "Action", "Cyberpunk"]
}

 

 

공식문서

https://platform.openai.com/docs/guides/structured-outputs/examples?context=ex4

반응형

**2024기준 후기

1. https://drive.google.com/file/d/1nrze9M8JAVpx5PFQkTvNpikd7y1yo7bw/view?pli=1 의 멀티콥터 4종 기출문제 다운받기

2. 2년전 자료라서, 업데이트된 내용이 많이 있을까봐 걱정했는데 4지선다 순서도 바뀌지 않고 그대로 문제 출제됨

3. 온라인 교육을 모두 시청하고나면, 시험은 총 20문제 50분 주어짐. 위의 기출문제 참고하면, 5분안에 시험응시 가능함.

출처 : https://youtu.be/IPPaIoDqKE0?feature=shared 


 

Q1. 무인비행장치를 육안으로 확인할 수 없는 범위에서 비행할 경우에는 특별비행 승인을 받아야 한다.

O ② X

 

Q2. 다음 무인비행장치 조종자가 준수해야 하는 사항으로 옳은 것은?

일몰 후부터 일출 전까지의 야간에 비행하는 행위

주류 등의 영향으로 조종업무를 정상적으로 수행할 수 없는 상태에서 조종하는 행위

비행 중 주류 등을 섭취하거나 사용하는 행위

무인비행장치를 육안으로 확인할 수 있는 범위에서 조종하는 행위

 

Q3. 항공안전법은 국제민간항공협약 및 같은 부속서에서 채택된 표준과는 권고되는 방식을따르며, 항공기 등의 효율적인 항행을 위한 방법에 대한 사항을 규정함을 목적으로 한다.

① O ② X

 

Q4. 다음 중 관제권에 대한 설명으로 옳지 않은 것은?

관제권은 계기비행항공기가 이착륙하는 공항에 설정되는 공역이다.

관제권은 하나의 공항에 대해 설정하며, 다수의 공항을 포함할 수는 없다.

③ 관제권은 수평적으로 공항중심(APR)로부터 5NM까지 설정할 수 있다.

④ 관제권은 수직적으로 지표면으로부터 3,00ft 또는 5,000ft까지 설정할 수 있다.

 

Q5. 다음 뇌우의 형성조건이 아닌 것은?

불안정 대기

상승 운동

강한 대류활동

④ 높은 습도

 

Q6. SHELL 모형에서 L-H는 인간과 절차, 매뉴얼 및 체크리스트 레이아웃 등과 같은 시스템의 비 물리적인 측면에 초점을 맞춘다.

① O X

 

Q7. 지구를 둘러쌓고 있는 지구 대기권은 일반적으로 물리적 특성에 따라 지표면에서부터 대류권, 성층권, 중간권, 열권, 외기권으로 나누고 있다.

O ② X

 

Q8. 바람속도(Wind Velocity)는 바람의 벡터 성분을 표현하는 것으로서, 스칼라 양인 풍속(Wind Speed)과는 같다.

① O X

 

Q9. 다음 중 모든 항공기에게 비행정보업무만 제공되는 공역으로, 초경량비행장치가 비행하는 공역에 해당하는 것은?

① A등급 공역

D등급 공역

E등급 공역

G등급 공역

 

Q10. 다음 항공안전법 목적에 대한 설명 중 옳지 않은 것은?

항공안전법은 국제민간항공협약 및 같은 부속서에서 채택된 표준과 견고되는 방식을 따른다.

항공안전법은 항공기, 경량항공기, 초경량비행장치로 구분, 안전사항을 규정한다.

항공안전법은 효율적인 항행를 위한 방법에 대한 사항을 규정한다.

항공안전법은 항공안전을 책임지는 국가의 권리와 항공사업자 및 항공종사자등의 의무에 대한 사항을 규정한다.

 

Q11. 비행안전에 영향을 미치는 인적요인으로는 시각, 피로, 수면, 약물 등이 있다.

① O ② X

 

Q12. 조종기 및 지상통제장치에 대한 설명으로 옳지 않은 것은?

지상통제장치를 통해 비행체로부터 데이터를 받으며 비행상태 파악 가능

기체 전원을 먼저 인가하고 조종기 및 지상통제장치 전원을 이후에 인가하는 것이 적절

전원을 차단할 때는 조종기 및 지상통제장치 전원을 마지막에 차단하는 것이 적절

안전을 위해 조종기 및 지상통제장치와 통신이 두절 되었을 경우 자동귀환 설정 필요

 

Q13. 다음 무인비행장치 전문교관 등록취소 사유에 대한 설명 중 옳지 않은 것은?

항공안전법에 따른 15일 이상의 행정처분을 받은 경우

허위로 작성된 비행경력증명서등을 확인하지 아니하고 서명 날인한 경우

비행경력증명서등을 허위 제출한 경우

실기시험위원으로 지정된 사람이 부정한 방법으로 실기시험을 진행한 경우

 

Q14. 초경량비행장치사용사업, 항공기대여업 및 항공레저스포츠사업에 사용하려는 자는 보험에 가입하여야 한다.

O ② X

 

Q15. 초경량비행장치 신고는 연료의 무게를 제외한 자체무게가 12킬로그램  이상인 무인동력비행장치가 대상이다.

① O ②X

 

Q16. 다음 항공안전법의 적용 및 적용특례에 대한 설명 중 옳지 않은 것은?

민간항공기는 항공안전법 전체를 적용

군용항공기와 관련 항공업무에 종사하는 사람은 항공안전법 미적용

세관업무 항공기와 관련 항공업무에 종사하는 사람은 항공안전법 적용

경찰업무 항공기는 공중충돌 등 항공기사고 예방을 위한 사항만 적용

 

Q17. 다음 무인비행장치 조종자가 준수해야 하는 사항으로 옳은 것은?

일몰 후부터 일출 전까지의 야간에 비행하는 행위

주류 등의 영향으로 조종업무를 정상적으로 수행할 수 없는 상태에서 조종하는 행위

비행 중 주류 등을 섭취하거나 사용하는 행위

무인비행장치를 육안으로 확인할 수 있는 범위에서 조종하는 행위

 

Q18. 초경량비행장치가 비행 가능한 공역에 대한 설명 중 옳지 않은 것은?

관제권과 비행금지구역에서 비행하려는 경우에는 비행승인이 필요하다.

이착륙장을 관리하는 자와 사전에 협의된 경우에는 이착륙장 중심으로부터 반지름 3km 밖에서 고도 500ft 미만으로 비행할 수 있다.

사람 또는 건축물이 밀집된 지역이 아닌 곳에서는 지표면, 수면 또는 물건의 상단에서 150m 이상에서 비행하는 경우에는 비행승인이 필요하다.

사람 또는 건축물이 밀집된 지역에서는 해당 초경량비행장치 중심으로 수평거리 150m(500ft) 범위 안에 있는 가장 높은 장애물의 상단에서 150m 이상에서 비행하는 경우에는 비행승인이 필요하다

 

Q19. 비행제어컴퓨터(FC)의 작동 원리에 대한 설명으로 옳지 않은 것은?

자세제어를 위해 관성측정장치(IMU) 센서 활용

센서 오차가 발생해도 정밀한 비행제어 수행 가능

③ 제자리 비행 등 위치제어를 위해 위성항법시스템(GNSS) 활용

④ 제어이득 튜닝을 통한 지행제어 성능 조절

 

Q20. 다음 바람 용어에 대한 설명 중 옳지 않는 것은?

 풍향은 바람이 불어오는 방향을 말한다.

 풍속은 공기가 이동한 거리와 이에 소요된 시간의 비이다.

 바람속도는 스칼라 양인 풍속과 같은 개념이다.

④ 바람시어는 바람 진행방향에 대해 수직 또는 수평 방향의 풍속 변화이다

 

 

반응형
1. Infra 핵심 설계사항
  1. 웹 서버 다중화
    - Load Balancer 로 장애에 대비하고, 부하가 높아진 경우에 대비해 웹 서버 추가를 가능하게 한다.
  2. DB 서버 다중화
    - 서비스 기능을 사용하여 DB 서버를 복제한다.
  3. CDN 과 객체 저장소를 사용한 정적 콘텐츠 전송
    - 웹 서버로의 접속을 줄여 운영 비용을 절감한다.
2. 기업 Web Site 설계 시, 가상 시나리오
  1. 공개 website 로 사용자는 거래처,잠재적 고객,입사지원자 등이다.
  2. 정적 콘텐츠 중심이다.
  3. 서버를 다중화하여 장애에 대비한다.
  4. 부하가 높아지면 서버를 추가할 있게 구성한다.
  5. 장애 서버의 교체,추가는 수동으로 조작한다.
  6. 응답시간과 비용을 고려하여 구성한다.
3. 기업의 WebSite 구성도

 

 

4. ELB 를 이용하여 웹 서버 다중화하는 방법

 

1단계 ) EC2 인스턴스 생성

  • 웹 서버 환경 구성(OS 환경 셋업, CMS install..)

2단계) AMI 로 등록

  • 앞서 만든 EC2 인스턴스를 이미지 형태로 저장

3단계) 다수의 EC2 인스턴스 복제

4단계) ELB 와 연계하여 다중화 설정

  • 인터넷 접속 EndPoint 를 ELB 로 지정
  • ELB는 IP 주소가 아닌 CNAME( 대체 도메인 이름)을 지정하여 접속. 왜냐하면, ELB 의 IP 주소는 고정이 아니라 계속해서 변하기 때문
  • DNS 서버인 Amazon Route 53 을 이용하여 ELB의 CNAME 과 사용할 도메인 이름을 연결. 이렇게 설정하면 도메인 이름을 통해 ELB 에 접속 가능

5단계) ELB 와 웹 서버의 EC2 인스턴스 연결

  • ELB 작성 페이지에 웹 서버 선택 항목에서 이미 만들어진 웹 서버 선택하면 됨
5. ELB 설정 시 유의사항

 

첫번째) ELB 용과 웹 서버용으로 각각 다른 보안 그룹 마련하기

  • ELB 는 인터넷 어디에서라도 HTTP 와 HTTPS 접속을 허용하도록 설정되어있음
  • 웹 서버는 ELB 로부터 HTTP 요청만 받아들이도록 설정함. 이때, traffic sauce 를 ELB 가 속한 보안 그룹으로 한정한다. 왜냐하면, subnet 으로 설정할 경우 ELB의 IP 주소가 바뀔 가능성이 있기 때문임.

두번째) session 유지 기능의 유무

  • session 정보를 웹 서버 간에 공유하는 구조를 마련하지 않을 경우, ELB 가 cookie 정보를 바탕으로 같은 client 는 동일한 웹 서버로 접속할 수 있도록 유지시키는 session 유지 기능을 마련해야한다.
  • management console 에서 설정 가능함

세번째) HTTPS 처리

  • ELB  listener 설정에서 로드밸런서 프로토콜을 HTTPS 로 설정 / EB2 인스턴스의 프로토콜은 HTTP 로 설정한다.
  • 위의 설정을 할경우 장점 3가지
    • 웹 서버별로 SSL 증명서를 관리할 필요가 없어짐
    • SSL 복호화 처리에 걸리는 부하가 줄어듬
    • EC2 인스턴스의 비용 감소

네번째) 웹 서버가 정상적으로 동작하는지를 감시하는 Health 체크 설정

  • Default 값 : 간격 30초 , 타임아웃 5초, 비정상 상한지 2회
  • 웹 서버 장애 발생 시, 40~70초 만에 감지하여 해당 서버를 분리함
  • 너무 짧게 간격을 설정할 경우, 웹서버의 부하 높아져 응답이 늦어지는 상태를 고장으로 오판할 수 있음
  • 너무 길게 간격을 설정할 경우, 웹 서버에 요청 배분을 게쏙함
  • 일반적으로 Default 값으로 충분하지만, 성능 시험/ 운영 시에 검출 오작동이 발생할 경우 수치 조정이 필요

다섯번째) 응답시간에 따른 timeout 설정

  • Default 값: 60초
  • 웹 서버 분산처리된 환경에서 일정시간 응답이 없을 경우 ELB 가 처리하는 방식
    • 웹 서버와의 접속 단절
    • client 에 HTTP 504 에러 반환
  • 만약, DB 처리 등으로 시간이 오래 걸리더라도 결과를 반환하고 싶은 경우 더 길게 시간 설정함
6. AWS에서 DB 서버 다중화하는 방법

 

1. AWS 에서 RDB 를 구성하는 방법 2가지

 

방법1 ) EC2 인스턴스에 RDBMS 설치

  • 장점 : OS, RDBMS 를 자유롭게 선택가능
  • 단점 : OS, DB 환경을 사용자가 직접 관리함

방법2 ) Amazon RDS 사용

  • 장점 : 패치, 백업이 자동화로 운영 번거로움 감소
  • 단점 : DB 운영에 제약이 있음

2. AWS RDS 를 이용하여 서버 다중화하기

  • RDS 엔진 선택하기 ( ex. SQL Server, MySQL, PostgreSQL, MariaDB, Aurora 등)
  • Active-Standby 구성 선택하여 DB 서버 다중화하기
  • RDS 의 Multi-AZ 기능 사용하기. (Multi-AZ 기능을 사용하면, active DB서버(master) 의 데이터를 standBy 서버에 동기화하는 복제 중복 구성을 쉽게 구축 가능함)

3. Multi-AZ 기능을 사용하여, RDS 설정 방법

 

첫번째) management console 의 RDS 설정화면에서 DB subnet 그룹 작성

두번째) DB subnet 은 2개 가용 영역(AZ)에 각각 subnet 을 만들고 그룹화하기

  • 2개의 가용 영역(AZ) 를 사용하여 subnet 을 만드는 이유는, 1개의 AZ 가 예상치 못한 재해로 멈추더라도 또 다른 AZ 에 설치된 subnet 에서 서버가 계속 동작하도록 하기 위함

세번째) RDS for MySQL 의 인스턴스 작성하기

  • Multi-AZ 를 이용하는 option 을 선택
  • 앞서 만든 DB subnet 그룹을 지정

네번째) Master - StandBy 2대로 구성된 DB 서버(RDS 인스턴스) 가 만들어짐

  • masteruser 가 자동으로 생성됨
  • masteruser 를 통해 application user 를 만들거나, 객체 관리, 데이터 관리 가능함
  • master-standby 구성으로 master 에 문제가 생겨도 데이터 손실이 안됨
  • 요금은 이중화 작업을 하지 않는 것에 비해, 2배로 발생함
  • 장애 발생 시, endpoint 는 DNS 가 새로 만들어진 master 서버로 자동으로 연결됨. 하지만, DB 접속은 자동으로 연결되도록 사전 설정 필요
7. RDS 사용 시 유의사항

 

첫번째) 적절한 snapshot 생성하기

두번째) AWS 에 의한 maintenance

세번째) multi-AZ 를 이용할 경우, 데이터 갱신 처리에 드는 시간 늘어남

 

8. 정적 콘텐츠를 낮은 비용으로 배포하는 법

 

1. 정적 콘텐츠 제공하는데 비용 많이 드는 경우

  • 방문자가 많은 시스템에서는 image, video, javascript, HTML, CSS  등의 정적 콘텐츠 제공에 많은 비용이 듬
  • 대용량 트래픽 처리하려면, 고성능 웹 서버가 여러대 필요함
  • EC2 는 다운로드 통신량에 따라 과금이 부과됨

2. 개선방법

  • CloudFront + S3 사용하기

3. CloudFront 은 어떻게 사용되는가?

  • CDN 의 일종으로 세계 각지에 배치된 서버에서 콘텐츠를 캐시하고 전달함
  • 캐시한 경우, 웹서버와 DB 서버에 접속하지 않아서 서버의 부하가 낮아짐
  • 사용자가 콘텐츠를 요청했는데 해당 콘텐츠가 CloudFront에 캐시되지 않은경우, ELB(로드밸런서)로 가지러 감
  • 사용자가 1번 요청한 콘텐츠는 CloudFront 에 캐시되어, 다음부터는 CloudFront 에 캐시된 값을 가져다 배포함
  • CloudFront 는 정적 콘텐츠, 동적 콘텐츠 모두 배포 가능함
  • CloudFront 의 참조 분리 기능을 이용하면, 정적콘텐츠는 S3에서 가져오고, 동적 콘텐츠는 ELB 에서 가져올 수 있음
  • CloudFront 사용 시, 콘텐츠의 directory 구성과 파일 네이밍 규칙도 고려해야함. 
  • 시스템 운용이 시작된 이후에도 CloudFront 사용 가능함

4. S3 은 어떻게 사용되는가?

  • S3 에 파일을 저장하면 파일 단위로 접속용 URL 이 생성됨. 이것을 이용해 정적 콘텐츠 저장소로 사용함
  • S3 요금 체계는 EC2 보다 낮게 설정되있음. 따라서, 정적 콘텐츠를 S3 에 저장해두는것이 비용상 유리함
9. 기업 웹사이트에 적합한 인스턴스 설계하기

 

요구사항 1) 안정적인 응답이 요구됨

  • 성능이 안정된 EC2 인스턴스와 EBS 볼륨을 선택해야함
  • Storage I/O 대역폭에 주의하여 선택해야함
  • 고려해보면 좋을 EC2 옵션 2가지
    • EBS 최적화 인스턴스 : EBS 볼륨까지 네트워크 대역폭을 보장받을 수 있다
    • 프로비저닝된 IOPS : 안정적으로 1만 IOPS 이상의 I/O 대역폭을 보장받을 수 있음. 단, 프로비저닝된 IOPS 만 사용할 경우 대역폭이 보장되지 않기 때문에 최적화 옵션도 함께 사용하기

요구사항 2) 몇 년 단위로 장기 이용함

  • 장기 이용을 약정하여 할인받을 수 있는 EC2 인스턴스를 선택해야함

 


참고도서

 

가와카미 아키히사. ( 2020년 03월 01일 ) 배워서 바로 쓰는 14가지 AWS 구축 패턴: 서버리스에서 마이크로서비스와 AI 까지, 실무에 바로 써먹는 시스템 구축 패턴 익히기. 한빛미디어

반응형
1. Infra 핵심 설계사항
  1. 리전(Region) 선택
    - 이벤트 사이트를 구동시킬 최적의 리전 선택
  2. EC2 인스턴스 설정
    - 이벤트 사이트의 web server 에 적합한 EC2 인스턴스 설정
  3. Domain 을 통한 접속
    - 고정 IP 주소와 접속한다 ( CNAME 설정을 통해 고정 IP 주소가 아닌 Domain 이름을 이용하여 Domain 에 접속할 수 있음)
  4. Network 구성
    - 인터넷 접속을 위해 간단한 네트워크 구성을 설정
  5. WebServer 로서 OS 환경 설정
    - 아마존 리눅스에 LAMP 환경을 설정
2. Event Site 설계 시, 가상 시나리오
  1. 1개월 한정 이용
  2. 사용자는 개인 사용로서 인터넷에 접속함
  3. 접속자 수는 많지 않아 고사양 서버 필요 없음
  4. 웹 서버로 LAMP(Linux, Apache,PHP, MySQL) 환경 사용
  5. 비용을 우선으로 하며, 다중화나 백업은 고려하지 않음
3. AWS 의 '심플 아이콘'으로 구성도 그리기

4. 이벤트 사이트 설계 방법 및 고려사항
  1. 리전에 따른 응답 속도와 비용차이
  2. EC2 인스턴스 작성하기
  3. Network 및 셧다운 동작 설정 주의 사항
  4. 보안그룹(Security Group) 설정으로 통신 필터링하기
  5. 고정 IP 와 호스트명으로 접속하게 하기
  6. VPC 설정으로 인터넷 접속 설정하기
  7. OS 환경을 웹 서버로 설정하기
  8. 운영 중에 리소스 유연하게 변경하기
  9. 이벤트 사이트를 종료하면서 할 일
5. 수기필기노트 정리

 

 


참고도서

 

가와카미 아키히사. ( 2020년 03월 01일 ) 배워서 바로 쓰는 14가지 AWS 구축 패턴: 서버리스에서 마이크로서비스와 AI 까지, 실무에 바로 써먹는 시스템 구축 패턴 익히기. 한빛미디어

반응형

1. 오류메세지

  • hadoop 에 임의의 디렉토리 생성 시도 시 아래와 같은 오류메세지 조회됨
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: Call From .local/172.30.1.81 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

 

2. 오류 원인

  • dfs 와 yarn을 실행하지 않아서였다.

3. 오류 해결방법

  • sbin/start-dfs.sh 실행
  • sbin/start-yarn.sh 실행
  • jps 명령어 실행 후, NameNode/SecondaryNameNode/DataNode/ResourceManager/NodeManager 가 모두 실행되었는지 확인
  • 폴더 재생성 시, 오류없이 실행됨
반응형

1. Terminus > Hosts > Edit Host 클릭 (한글깨짐 문제 발생한 Host 서버에 마우스를 갖다대면, 우측에서 연필 아이콘 표시된다. 연필 아이콘 클릭)

2. + Add environment variable 클릭

3. New Variable 추가

  • Variable : LANG (대문자로 입력)
  • Value : ko_KR.UTF-8

4. Host 재접속. 끝

반응형

반응형
import sys
from collections import deque

n = int(sys.stdin.readline())
deque2 = deque([])
for i in range(n):
    data = list(map(int,sys.stdin.readline().split()))

    if data[0] == 1:
        deque2.appendleft(data[1])

    if data[0] == 2:
        deque2.append(data[1])

    if data[0] == 3:
        print(-1 if len(deque2) == 0 else deque2.popleft())

    if data[0] == 4:
        print(-1 if len(deque2) == 0 else deque2.pop())

    if data[0] == 5:
        print(len(deque2))

    if data[0] == 6:
        print(1 if len(deque2)==0 else 0)

    if data[0] == 7:
        print(-1 if len(deque2)==0 else deque2[0])

    if data[0] == 8:
        print(-1 if len(deque2)==0 else deque2[-1])
반응형

'알고리즘' 카테고리의 다른 글

[백준] 28278 스택2  (0) 2023.10.17
[백준] 10988 팰린드룸인지 확인하기  (0) 2023.10.17
[백준] 18258 큐2  (0) 2023.10.17
[백준] 13241 최소공배수  (0) 2023.10.17
[백준] 7785 회사에 있는 사람  (0) 2023.10.17

+ Recent posts