문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수의 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

 

26부터 시작한다. 2+ 6 = 8이다. 새로운 수는 68이다. 6 + 8 = 14이다. 새로운 수는 84이다. 8 + 4 = 12 이다. 새로운 수는 42이다. 4 + 2 6이다. 새로운 수는 26이다.

 

위의 예는 4번만에 원래 수로 돌아올 수 잇다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제 입력 1

26

예제 출력 1 

4

 

예제 입력 2 

55

예제 출력 2 

3

예제 입력 3 

1

예제 출력 3 

60

 

#include <iostream>


using namespace std;


int main()
{
    int n, temp;
    int count = 0;
    cin >> n; // 26 
    temp = n;
    int front, back;

if(n < 0 || n > 99) 
{
    return 0;
}
    while(1)
    {
        front = n / 10; // 2 
        back = n % 10; // 6 

        n = back * 10 + ((front+back) % 10); // 60 + 2 + 6  = 68 
        count ++; // 1 
        if(n == temp) 
        {
            cout<<count<<endl;
            break;
        }
    }
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

return 0;
}

 

부가적인 설명이 필요하지 않을 것 같아서 그렇게 글을 올립니다 ~

 

이상포스터를 마치겠습니다.

'C&C++' 카테고리의 다른 글

백준 10818번 최소,최대 문제 풀이  (0) 2020.04.05
C++ , 자바(Java) 입출력  (0) 2020.04.05
블록과 블록체인  (0) 2020.03.12
머클 트리(Merkle tree)  (0) 2020.03.12
유닉스/리눅스의 구성요소  (0) 2020.03.12

c++

  • c++의 경우에는 scanf/printf, cin/cout을 사용할 수 있다.

  • cin/cout은 scanf/printf보다 느리기 때문에, 입/출력이 많은 문제의 경우에는 scanf/printf를 사용하는 것이 좋다.

  • cin/cout경우 아래 세 줄을 추가하면 scanf/printf만큼 빨라진다.

   ios_base::sync_with_stdio(false);

cin.tie(NULL);  or cin.tiec(nullptr)

위에 두개만 작성해도 충분하다.

cout.tie(NULL);

이 경우에는 cin/cout와 scanf/printf을 섞어 쓰면 안된다. 즉, cin/cout만 써야 한다.

 

출력속도 비교는 c++(cout, '\n'사용) : 0.827초를 쓰는 게 좋다. 즉, endl<\n이 더 좋다.

 

java입출력

  • Java는 입력은 Scaner, 출력은 System.out을 사용한다.  = Scanner sc = new Scanner(System.in);

  • 입력이 많은 경우에는 속도가 느리기 때문에, BufferedReader를 사용한다.

  • BufferedReader br = new BufferedReader(new InputStreamReader(Syste.in));

  • 출력이 많은 경우에는 StringBuilder를 사용해서 한 문자열로 만들어서 출력을 한 번만 사용하거나

  • BufferedWriter를 사용한다.

 

 

 

이상포스터를 마치겠습니다.

'C&C++' 카테고리의 다른 글

백준 10818번 최소,최대 문제 풀이  (0) 2020.04.05
백준 1110번 c++ 문제풀이  (0) 2020.04.05
블록과 블록체인  (0) 2020.03.12
머클 트리(Merkle tree)  (0) 2020.03.12
유닉스/리눅스의 구성요소  (0) 2020.03.12

안녕하세요 오늘은 미라클 모닝에 대해서 한 번 써보겠습니다, 미라클 모닝을 최소 한 3~4번 읽었던 것 같습니다. 그러면서

아침형 인간이 되고 명상을 하고 확신의 말을 많이 했던 것 같습니다. 

여기서 제일 중요한 것은 아침에 일찍 일어나는 것이 중요한 게 아니라 일어나서 무엇을 하느냐가 중요합니다.

이번 포스트에서는 개인적인 생각이 많이 들어가있습니다.

저는 미라클모닝을 읽고난 뒤 명상과 하루를 어떻게 시작할 것이며 운동을 자주 하고 확신의 말을 자주 합니다!

명상 5분 확신의 말 30초정도로 두고 있습니다. 운동은 일어나서 하기 보다는 7일에 2~3번씩 하고 있습니다.

 

저는 딱 세가지만 여쭈워 보고 싶습니다.

1. 목표가 무엇입니까?

   삶을 살아가게하는 '이유'는 무엇인가요? 저는 삶을 살아가는 이유는 재밌고 제 목표를 위해서 하루를 살아가고 있습니다. 물론, 힘들일도 있으면 운동으로 스트레스를 풀고 있으며 뭔가 일을 계속 배우고 싶다는 생각이 큽니다.

만약 목표가 없다면 아주 사소하고 간단한 것이라도 좋습니다 .예를 들어서 다이어리를 사서 하루일과를 다 달성하기, 아침에 일어나서 팔굽혀펴기 1회하기 이렇게 사소한 것들도 괜찮습니다. 일단 하기 바랍니다.

또한, 목표가 지금도 생각나지 않는다면 주말에 도서관에 가서 아무것도 없이 핸드폰도 없이 팬과 종이를 하나 준비해서 계속 생각하십시오.

목표가 생각나면 종이에 적고 '잘 보이는 곳'에 방치해두세요 그러면 보면서 무조건 이루겠다는 다짐이 생깁니다.

 

2. 시간을 헛되이 쓰고 있지 않나요 ?

 주말에 스마트폰만 만지지 않나요? 하루하루가 지루하지 않으신가요? 저는 하루하루가 되게 신비스럽다고 생각합니다.

하루하루를 시간을 헛되이 보내지 말고 크리스마스처럼 기다려지는 아침을 맞이하세요

저는 크리스마스보다 놀러가는 것을 생각합니다. 놀러간다는 생각을 가지면 아침하루하루가 색다롭습니다.

 

어바웃 타임에서 이런 말을 합니다.

LIve life as if there were no second chance

다시 돌아올 두 번의 기회는 없다고 생각하고 삶을 살기를

여러분들도 시간을 헛되이 보내지 말고 의미있는 시간을 보내세요

 

3. 세상이나 자신에 대한 부정적인 생각만 하지 않나요?

부정적인 생각을 많이 할 수록 삶에 대한 의욕이 떨어지고 있습니다. 예전에 제가 군대에 있었을 때 부정적인 생각을 많이 한 적이 있었습니다. 시간 언제가지? 아 군대 진짜 싫다. 군대 왜 있어? 이런 부정적인 생각만 했었습니다. 하지만, 군대를 제대하고 군대에서 책을 많이 읽고 사회에 나가서도 책을 많이 읽게 되었습니다. 책을 읽으면서 부정적이였던 내가 긍정적인 생각 등으로 많이 바뀌었습니다. 전 군대 없었으면 이만큼 안 변했을 것이라고 생각합니다. 군대 안에서 책도 많이 읽고 사람을 어떻게 대하는 지에 대한 공부와 사회생활을 배운 게 많아서 안 좋은 쪽보다는 좋고 군대 안에서 책을 많이 읽어놔서 지금까지도 책을 읽고 있습니다. 책을 읽은 지 한 3년정도 됐습니다. 처음에는 자기개발 쪽에 관심이 있다가 지금은 '부'에 대해 책을 읽고 있습니다.

 

미라클모닝을 강추합니다. 개인적인 생각이 많이 들어갔지만 습관이 제일 중요합니다.

 

우리는 모두 똑같이 일주일에 168시간을 받는다. -케이티 히니-

 

이상 포스터를 마치겠습니다.

먼저 소스코드부터 보여드리겠습니다.

from bs4 import BeautifulSoup
import requests


#로그인 유저정보
LOGIN_INFO = {
    'user_id' : '', #루리웹의  자신의 아이디랑 비번을 넣어줘야합니다 일단. 
    'user_pw': ''
    }

#Session 생성, with 구문안에서 유지
with requests.Session() as s:
    login_req = s.post('https://user.ruliweb.com/member/login_proc', data=LOGIN_INFO)
    #송신확인 HTML 소스확인
    # print('login_req', login_req.text)
    #Header 확인
    # print('headers', login_req.headers)
    # ---- 송신 확인 과 헤더를 확인합니다. 
    
    if login_req.status_code == 200 and login_req.ok: 
    	# 만약 송신이 되었다면 밑에 프로그램을 실행
        # 보고 있는 게시판 URL 저장 
        post_one = s.get('https://bbs.ruliweb.com/market/board/320103/read/124780?')
        post_one.raise_for_status() # 에러가 발생한다면 예외처리
        soup = BeautifulSoup(post_one.text, 'html.parser') # 뷰티풀솝을 이용해 파싱
        #print(soup.prettify()) 
        article = soup.select_one(" div.board_main_view").find_all('p')# div.board의 p태그를 찾습니다. 
        #print(article) # <p> 출력하고요 
        
        for i in article :
            print(i.string)#  <p> 없이 출력
            
        
        

 

음 여기서 article = soup.select_one("div.board_main_view").find_all('p')을 찾는 법을 알려드리겠습니다.

 

결과는 다음과 같습니다.

 

 

만약

 for i in article :
                print(i.string)

을 좀 더 활용한다면

 

 for i in article :
            if i .string is not None:
                print(i.string) 

이렇게 되겠네요 

Rest(Representational State Transfer)

HTTP URL(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 자원에 대한 CRUD Operation을 적용한다.

, 분산 시스템의 아키텍처 스타일이다. 조건을 제시하면서 분산 시스템을 설계한다.

 

RESTful?

제약 조건의 집합을 모두 만족하는 것을 의미

 

REST는 아키텍처 스타일, RESTful APIREST아키텍처 원칙을 모두 만족하는 API

 

REST가 필요한 이유는?

1.분산 시스템을 위해서, 애플리케이션의 모듈 , 기능별로 분리하기 쉬워졌기 때문

 

2. WEB브라우저외의 클라이언트를 위해서(멀티 플랫폼)

웹의 데이터만 보내면 여러 클라이언트에서 해당 데이터를 적절히 보여주기 때문

 

 

Resource : 위치 명시

Method : 명시

 

참고자료

https://jeong-pro.tistory.com/180

소스밖에 없는데 소스를 직접 해석하는 것도 실력이락 생각합니다. 

import requests


# r = requests.get('https://api.github.com/events')
# r.raise_for_status() # 예외 발생해줌
# print(r.text)


jar = requests.cookies.RequestsCookieJar()
jar.set('name', 'kim', domain='httpbin.org', path='/cookies')

#r = requests.get('http://httpbin.org/cookies', cookies=jar)
#r.raise_for_status()

# print(r.text)


# r = requests.get('https://github.com', timeout= 5)
# print(r.text)

#r = requests.post('http://httpbin.org/post', data= {'name' : 'kim'}, cookies=jar)
# print(r.text)

payload1 = {'key1' : 'value1', 'key2' : 'value2'} #dict 
payload2= (('key1', 'value1'), ('key1','value2')) #tuple

r = requests.post('http://httpbin.org/post', data = payload2)
print(r.text)


 

 

결과값은 직접 해보셔서 저한테 알려주시길 바랍니다^^,, 

여기서 r.raise_for_status()는 r = requests.get('http://httpbin.org/cookies', cookies=jar)에서

에러가 발생했을 때 에러 상황을 알려줍니다.

만약 에러가 보고 싶다면 r = requests.get을 r = requedda.get으로 바꿔보시길 바랍니다. 

 

이상포스터를 마치겠습니다.

UTF-8이란?

각국의 언어를 통인된 방법으로 표현할 수 있게 만든 것이다.  유니코드에서 8비트를 쓰는데 영어, 미국권의 언어를 8비트로 표현할 수 있지만 한국, 일본은 8비트로 표현한다는 것은 제한적이 많다. 

유니코드로 통해서 컴퓨터언어들을 해석해줄 수 있다. 아스키코드는 0x41은 대문자 A이고 이를 유니코드표에서 찾으면 U+0041이 된다. 

 

EUC-KR와 CP949란? 

2바이트로 한글을 표현할 수 있게 만든 방식이다. 즉, 한글을 2바이트로 사용하는 문자집합

하지만. EUC-KR은 오래전부터 쓰였지만 한글을 표현하는데 지장이 있어 MS에서 CP949를 사용하기 시작했다. CP949는 한글을 표현할 수 있으며, 윈도우에서 주로 사용한다. 하지만 한글을 쓰는 데 아직 많은 부족한 점이 많다.

 

 

결론적으로 웹에서 UTF-8을 기본으로 사용하고 있어서 한글 사이트를 만드는 경우에는 인코딩을 EUC-KR로 설정해야 해야 한다. 왜냐하면 윈도우를 사용하는 사람들이 많고 올바르게 사용하기 위해서는 EUC-kR로 인코딩하는 것이 더 적합하다.

 

 

이상포스터를 마치겠습니다.

cmd창에서 윈도우키 + R

pip install stream-python

pip install pytube

 

를 해줍니다.

 

import pytube

yt = pytube.YouTube("https://www.youtube.com/watch?v=hWYM5QEt0Fg")
# 유튜브 사이트에  가호 - 시작을 초기하면에서 복사 
videos = yt.streams.all()


#print('videos',videos)


for i in range(len(videos)):
    print(i, ' , ', videos[i])
    
    

down_dir = "C:\\Users\\admin\\dist" # mp4를 저장할 곳 입력, 다른 폴더 만들어도 됨 

videos[0].download(down_dir)

ImportError: cannot import name 'quote' from 'pytube.compat

만약 이런 오류가 뜬다면

 

pip uninstall pytube
pip uninstall pytube3
pip insatll pytube

 

를 다시 해보시길 바랍니다. 

 

 

mp4가 설치되었습니다. 이제 mp4 -> mp3로 변환해주겠습니다. 

http://ffmpeg.org/download.html 운영체제에 맞게 설치를 해줍니다. 

 

Download FFmpeg

If you find FFmpeg useful, you are welcome to contribute by donating. More downloading options Git Repositories Since FFmpeg is developed with Git, multiple repositories from developers and groups of developers are available. Releases Approximately every 6

ffmpeg.org

 

 

이제 ffmpeg을 다운 받고 압축을 푼 다음에 ffmpeg파일을 dist 폴더 안에 넣어줍니다.

만약 파일을 계속 옮기고 싶지 않으신 분은 환경변수를 설정하시는 것을 추천합니다. 

 

 

 

그런 다음 cmd 창에서 

ffmpeg -i "가호(Gaho) - 시작 (이태원 클라쓰 OST PART02)  가사 ITAEWON CLASS OST.mp4" new.mp3

을 입력해춥니다. 

 

마지막에 있는 new.mp3은 이름을 무엇으로 저장할 것인지입니다. 다른 이름으로 하셔도 됩니다. 

 

실행결과

new파일이라는 mp3가 생성되었습니다. 

 

이상포스터를 마치겠습니다.

'파이썬' 카테고리의 다른 글

Rest, RestFul이란?  (0) 2020.04.03
requests의 tuple과 dict 차이  (0) 2020.04.03
아나콘다(Anaconda) 설치법  (0) 2020.04.01
웹 스크래핑 및 머신러닝 딥러닝 개념  (0) 2020.04.01
유닛테스트(unittest) 사용법  (0) 2020.03.31

+ Recent posts