파이썬 문제 풀어보기
개요: 행렬 크기 N * M 만큼의 행렬 A, B를 더하는 프로그램
접근방법: numpy를 사용할 수 없으니 빈 배열을 만들고 for문으로 차례차례 더한다
import sys
N, M = map(int, sys.stdin.readline().split())
array = [[0] * M for _ in range(N)] # N, M만큼의 0으로 된 빈 배열 만들기
for i in range(2):
for j in range(N):
cache = list(map(int, sys.stdin.readline().split())) # cache에 1차원 리스트로 입력값 받음
for k in range(M): # j행의 k번째 요소를 각각 더해서 업데이트
array[j][k] += cache[k]
for m in range(N):
print(*array[m]) # *(Asterisk)를 이용해 각 행마다 풀어서 출력
- numpy로 하면 간단한 문제를 너무 복잡하게 풀게 되었다.
- print(*리스트) 하면 리스트 내 모든 요소를 출력할 수 있다는 것을 기억해두자
import sys
import numpy as np
N, M = map(int, sys.stdin.readline().split())
array = np.zeros((N, M)) # N x M 크기의 0으로 된 행렬을 만든다
for i in range(2):
for j in range(N):
cache = list(map(int, sys.stdin.readline().split()))
array[j] += cache # cache 리스트를 그냥 numpy array에 더할 수 있음
array = np.asarray(array, dtype= int) # asarray 메소드로 요소 타입은 int로 바꿔줌
for m in range(N):
print(*array[m])
내일배움캠프 5기 합류 전 기본적인 강의를 들어야 한다고 한다.
웹개발을 위한 기본적인 강의 (HTML, CSS, JavaScript)
진도
- fetch : JSON데이터를 받아올 수 있는 API
fetch("URL").then(res => res.json()).then(data => { console.log(data) });
- fetch로 데이터를 긁어와서 출력해주는 script
<script> function q1() { fetch("http://spartacodingclub.shop/sparta_api/seoulair").then(res => res.json()).then(data => { let rows = data['RealtimeCityAir']['row'] $('#names-q1').empty(); rows.forEach((a) => { let gu_name = a['MSRSTE_NM']; let gu_dust = a['IDEX_MVL']; let temp_html = `<li>${gu_name} : ${gu_dust}</li>`; $('#names-q1').append(temp_html) }); }) } </script>
$(document).ready(function () {
fetch("http://spartacodingclub.shop/sparta_api/weather/seoul").then(res => res.json()).then(data => {
$('#temp').empty();
$('#temp').append(data['temp']);
})
})
감상
전체적으로 맛만 보는 느낌이라 아직 잘 모르겠다. 다음 주에는 JavaScript에 대해서 좀 더 자세히 공부해봐야겠다.
웹개발을 위한 기본적인 강의 (SQL)
진도
- 문자열 다루기
- SUBSTRING_INDEX(칼럼, '나누고자 하는 문자열 기준', 순서)
- SUBSTRING(칼럼, 첫 숫자, 글자 수)
- CASE ~ WHEN ~ THEN ~ END:
- 구간을 나눠서 조건식 가능
CASE WHEN 조건 THEN '뭐다' WHEN 조건 THEN '뭐다' END
- 마지막에는 END로 CASE문의 끝을 알려줘야 함
CASE WHEN pu2.point >= (SELECT avg(point) FROM point_users pu) THEN '잘 하고 있어요' ELSE '열심히 합시다.' END
- 서브쿼리와 서브쿼리를 합칠 때는 둘을 그냥 INNER JOIN하는 것이 아니라 메인 쿼리문을 만들어 준다음 ( ex. SELECT * FROM (서브쿼리1) ) 거기에 INNER JOIN해서 나머지 다른 하나를 붙여준다.
SELECT * FROM ( SELECT enrolled_id, count(*) as done_cnt FROM enrolleds_detail WHERE done = 1 GROUP BY enrolled_id ) as A INNER JOIN ( SELECT enrolled_id, count(current_order) as total_cnt FROM enrolleds_detail GROUP BY enrolled_id ) as B ON A.enrolled_id = B.enrolled_id
with절을 쓴다면
With table1 as ( SELECT enrolled_id, count(*) as done_cnt FROM enrolleds_detail WHERE done = 1 GROUP BY enrolled_id ), table2 as ( SELECT enrolled_id, count(current_order) as total_cnt FROM enrolleds_detail GROUP BY enrolled_id ) SELECT A.enrolled_id, done_cnt, total_cnt FROM table1 as A INNER JOIN table2 as B ON A.enrolled_id = B.enrolled_id
감상
이제 쿼리문이 점점 복잡해져서 한 눈에 볼 수 있도록 정리하고 구동 순서도 잘 기억해야겠다. 마서브쿼리문이 나오면서 많이 복잡하다. [완강]