level 2. 콜라츠 추측

|

출처

문제

1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.

풀이 (python)

# 인자가 1보다 크면 계속 연산을 진행 > 1이 되는 순서를 리턴 > 순서가 500보다 크면 -1 리턴
def collatz(num):
    i = 0
    while num > 1:
        num = num * 3 + 1 if num % 2 else num / 2
        i += 1
    return i if i < 500 else -1

다른사람 풀이

# 500번 반복하여 연산을 진행 > 1이 되는 순서를 리턴 > 500번 반복해도 1이 되지 않으면 -1 리턴
def collatz(num):
    for i in range(500):
        num = num / 2 if num % 2 == 0 else num*3 + 1
        if num == 1:
            return i + 1
    return -1

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(collatz(6))

배운점

  • 3항 연산자를 잘 활용하자 A if 조건 else B

MySQL 03. MySQL - DB생성, phpmyadmin

|

생활코딩 - MySQL

SQL

  • Structured Query Language
  • 데이터베이스에서 데이터를 저장하거나 얻기 위해서 사용하는 표준화된 언어.

Database

  • 데이터가 실질적으로 적재되는 테이블들을 분류하는 상위 개념

생성

CREATE DATABASE `데이터베이스명` CHARACTER SET utf8 COLLATE utf8_general_ci;

삭제

DROP DATABASE `데이터베이스명`;

열람

SHOW DATABASE;

선택

USE `데이터베이스명`;

phpmyadmin

  • 웹 환경에서 DB를 제어할 수 있는 mysql client

실행방법

  • Bitnami 설치 - 참고자료
  • Bitnami 실행 후 MySQL, Apache Web Server 구동
  • http://localhost:8080/phpmyadmin/ 접속 (open phpMyAdmin)
  • bitnami 설치시 지정한 암호로 (id : root) 접속
views
bitnami 설치를 통한 내부 웹서버 구동

자료

MySQL 02. MySQL Client - mysql monitor 기본

|

생활코딩 - MySQL

mysql client 종류

mysql-monitor

  • mysql을 설치하면 기본적으로 설치되는 프로그램
  • mysql -u아이디 -p비밀번호
  • mysql query browser
    • GUI 환경 제공
  • phpMyAdmin
    • 서버에 직접 설치하는 웹프로그램으로, 웹으로 제공되는 서비스이기 때문에 어디서든지 웹환경에서 DB를 제어할 수 있다.
  • navicat
    • 기능이 많고 안정적이다. 유료

mysql monitor 사용법

mysql monitor

  • mysql 서버의 번들로 제공되는 기본 프로그램 (mysql client)
  • 명령어 기반
  • mysql 관련된 거의 모든 기능을 사용할 수 있고, mysql이 있는 곳에 함께 기본으로 설치되어 있다.

사용법

  • mysql -u아이디 -p비밀번호
  • mysql -h호스트주소 -p포트번호 -u아이디 -p비밀번호

데이터베이스 생성 및 조회

mysql > CREATE DATABASE music CHARACTER SET utf8 COLLATE utf8_general_ci; mysql > show databases

데이터베이스 선택

mysql > use music

테이블 생성 및 조회

CREATE TABLE `favorite_music` (
  `title` varchar(255) NOT NULL,
  `musician` varchar(20) NOT NULL,
  `duration` varchar(20) NOT NULL,
  `album` varchar(30) NOT NULL
) ENGINE=innodb;

mysql> show tables;

테이블에 데이터 추가

insert into favorite_music (`title`,`musician`, `duration`, `album`) values('Chasing Pavements', '아델', '3:30', 19);

입력된 데이터 조회

select * from favorite_music;

종료

mysql> exit;

MySQL 01. MySQL 설치 및 환경설정

|

생활코딩 - MySQL

데이터베이스와 MYSQL

  • 데이터베이스란 : 데이터의 저장소

데이터베이스의 종류

  • 관계형 데이터베이스
    • mysql, oracle, mssql
  • nosql
    • mongodb 등

데이터베이스 시스템의 구성

views

Database Server

  • DB 서버 안에 데이터를 저장하고, 저장된 데이터를 수정하거나 삭제하는 등의 제어 관리 기능을 갖고 있는 것

Database

  • Table을 카테고리로 분류한것

table

  • row(행) : 서로 연관되어 있는 데이터의 그룹
  • column(열) : 데이터의 성격에 대한 구분
  • field : 한칸 한칸에 들어가 있는 구체적인 데이터
  • record : 구체적인 데이터의 행

Database Client

  • DB 서버에게 요청해서 여러가지 명령을 하거나, 데이터를 가져온다거나 서버의 상태를 체크하기 위한 시스템
  • mysql-client 는 mysql을 설치하면 기본적으로 설치된다.

MySQL 설치

HomeBrew를 통한 설치

how to

  1. HomeBrew 설치
  2. mysql 설치 : $ brew install mysql
  3. mysql 시작 : $ mysql.server start
  4. root 비밀번호 설정 : $ mysql_secure_installation
    • Would you like to setup VALIDATE PASSWORD plugin? : 비밀번호 가이드. 복잡한 비밀번호를 사용하도록 제한해주는 플러그인을 사용하려면 yes, 보안은 무시하고 그냥 쓰던 비밀번호 제한받지 않고 쓰고 싶다면 no.
    • Remove anonymous users? : 익명사용자 삭제할지/계속 사용할지 여부. no 하면 $ mysql -uroot가 아니라 $ mysql만으로도 접속 가능. yes하면 -u 옵션 필수.
    • Disallow root login remotely? : localhost외에 다른 ip에서 root 아이디로 원격접속 가능하게 할지. yes하면 원겹접속 불가.
    • Remove test database and access to it? : mysql에 기본적으로 설정된 test 디비 삭제 여부.
    • Reload privilege tables now? : 하나라도 권한 변경을 했다면 yes 해서 하는 게 정신건강에 좋을 것입니다.
  5. charset 설정 : $ mysql -uroot -p로 로그인하고, > status;로 charset 확인.
    • 기본적으로 charset 4개가 모두 utf8이어서 그대로 두면 됨!
    • 혹시나 latin등 다른 값이 있다면 위의 4. charset UTF-8로 바꾸기 따라하기. my.cnf가 기본적으로 존재하지 않으므로 $ vi /etc/my.cnf 등을 통해 새로 생성.
  6. 데몬 실행 $ brew services start mysql (참고)
    • 로그인시 데몬 자동 실행 (To have launchd start mysql at login): $ ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
  7. +, brew로 설치했다면 환경변수 설정은 필요없어요! :)

versions

brew는 기본적으로 최신 버전(5.7)을 제공하지만, 다른 버전(5.6 등)을 설치하고 싶은 경우 brew versions를 사용합니다.

  1. $ brew tap homebrew/versions로 brew versions를 설치 후,
  2. $ brew search mysql로 검색, 원하는 버전의 formula 이름을 확인합니다. (예: homebrew/versions/mysql56)
  3. $ brew install <설치할 formula>으로 mysql 설치. (예: $ brew install homebrew/versions/mysql56)

level 2. 두 정수 사이의 합

|

출처

문제

adder함수는 정수 a, b를 매개변수로 입력받습니다. 두 수와 두 수 사이에 있는 모든 정수를 더해서 리턴하도록 함수를 완성하세요. a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. 예를들어 a가 3, b가 5이면 12를 리턴하면 됩니다.

a, b는 음수나 0, 양수일 수 있으며 둘의 대소 관계도 정해져 있지 않습니다.

풀이 (python)

def adder(a, b):
	if a == b:
		return a
	elif a < b:
		return sum(list(range(a, b+1)))
	else:
		return sum(list(range(b, a+1)))


# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( adder(3, 5))

다른사람 풀이

def adder(a, b):
    if a > b : a, b = b, a
    return sum(list(range(a, b+1)))

배운점

  • if 조건 : 실행 이렇게도 사용할 수 있다.
  • a, b = b, a 와 같이 두 변수의 값을 바꿀 수 있다.