전체 글 83

백준(BOJ) 16945 : 매직 스퀘어로 변경하기 (자바, JAVA)

16945번: 매직 스퀘어로 변경하기 1부터 N2까지의 수가 하나씩 채워져 있는 크기가 N×N인 배열이 있고, 이 배열의 모든 행, 열, 길이가 N인 대각선의 합이 모두 같을 때, 매직 스퀘어라고 한다. 크기가 3×3인 배열 A가 주어졌을 때, www.acmicpc.net 설계 3 x 3 매직 스퀘어(마방진)을 만족시키는 2차원 배열 목록을 만든다. 입력 받은 배열을 정답 배열과 비교하면서 가장 적은 비용을 확인한다. 구현 코드 // package boj16945; // 패키지 선언 import java.util.Scanner; // 사용자 입력을 위한 Scanner 클래스 임포트 // import java.util.Arrays; // 배열을 문자열로 출력하기 위해 Arrays 클래스 임포트 public..

Problem_Solving 2023.12.25

프로그래머스 : 행렬의 곱셈 (자바, JAVA)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 행렬 내적은 두 개의 행렬을 곱하는 연산으로, 주어진 두 행렬 A와 B가 있을 때, 결과 행렬 C를 계산하는 방법이다. 이때 A의 열의 수와 B의 행의 수가 일치해야 한다. 먼저, 주어진 두 행렬 A와 B가 다음과 같다고 가정해 본다면, 결과 행렬 C는 m x p 크기를 가지게 된다. 행렬 C의 각 원소 cij는 다음과 같이 계산된다. 코드에서는 이러한 원리를 기반으로 중첩된 반복문을 사용하여 각 원소를 계산하고 결과 배열 C에 저장. 각 원소 cij는 A의 행 i1과 B의 열 j2를 곱한 값들을 모두 ..

Problem_Solving 2023.12.25

프로그래머스 : 모의고사 (자바, JAVA)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 두 배열 간의 일치 여부를 판단하고 해당 결과 중 가장 높은 값을 찾아낸다. 삼항연산자, Stream API 등을 활용하여 코드를 더 간결하고 효율적으로 작성 구현 코드 // import java.util.Arrays; import java.util.ArrayList; public class Solution { public int[] solution(int[] answers) { // 세 수포자의 답안 패턴을 배열로 정의합니다. int[] s1 = {1, 2, 3, 4, 5}; int[] s2 = {2,..

Problem_Solving 2023.12.24

백준(BOJ) 3052 : 나머지 (자바, JAVA)

3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 설계 입력받은 수를 42로 나눈 나머지 중 고유값의 개수를 구한다. 자연수로 된 특정 범위의 고유값을 구할 경우 중복 여부를 배열을 통해서 기록할 수 있다. 구현 코드 // package boj3052; import java.util.Scanner; //import java.util.Arrays; public class Main { public static void main(String[] args) { // 각 나머지 값의 중복 여부를 저장하는 배열 boolean remain[] = new boolean[42]; Scanner s..

Problem_Solving 2023.12.24

백준(BOJ) 16561 : 3의 배수 (자바, JAVA)

16561번: 3의 배수 윤영이는 3의 배수 마니아이다. 그는 모든 자연수를 3개의 3의 배수의 자연수로 분해하는 것을 취미로 가지고 있다. 문득 그는 자신에게 주어진 수를 3개의 3의 배수로 분리하는 경우의 수가 몇 www.acmicpc.net 설계 3의 배수인 자연수를 3개의 3의 배수로 나누는 문제 주어진 자연수를 n, 3개의 수를 각각 i, j, k라고 할 때, i와 j가 정해지면 k는 따라서 정해짐, 고로 k는 n-i-j 3의 배수 3개로 나눠진다면... i는 최소 3부터 최대 n-6의 범위를 갖게 됨 (j와 k의 최소치인 3씩을 남겨둬야 함) j는 최소 3부터 최대 n-3-i의 범위를 갖게 됨 (i를 제외하고도 k의 최소치인 3을 남겨둬야 함) i와 j가 for문의 조건을 충족시킨다면 3의 배..

Problem_Solving 2023.12.24

Playwright로 Colab에서 연합뉴스 크롤링하기

Playwright로 Colab에서 연합뉴스 크롤링하기 Colab 노트북 231221_Playwright로 Colab에서 연합뉴스 크롤링하기.ipynb Colaboratory notebook colab.research.google.com 연합뉴스 최신기자 페이지(https://www.yna.co.kr/news/1)를 크롤링하는 코드를 짜달라는 요청이 들어왔다. 아니 컴공 복전한 사람이 이런 것도 못해? 라고 힐난하고 책망하려던 차에... --------------------------------------------------------------------------- SSLError Traceback (most recent call last) /usr/local/lib/python3.10/dist-p..

Today_I_Learned 2023.12.21

[Django DRF] Serializer에서 id를 사용한 M:N 관계

Django REST Framework(DRF)에서 Many-to-Many(M:N) 관계 Book과 Author 모델이 M:N 관계에 있다고 가정 Book 모델이 여러 Author를 가질 수 있고, 반대로 Author도 여러 Book을 가질 수 있는 상황 이미 작성된 author를 사용한다고 가정 # models.py from django.db import models class Author(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) authors = mo..

Today_I_Learned 2023.11.13

AWS API Gateway로 DynamoDB PutItem 메서드 구현 (23.10.13)

본 글을 이해하기 위해서는 아래와 같은 사항이 필요함 - AWS 계정 생성 경험 - RESTful API에 대한 이해 (HTTP Verb, Body, 테스트 등) - Colab(Jupyter Notebook, Python)에 대한 경험 STEP 1 : API Gateway 생성 상단 검색바에 API Gateway 검색 및 접속 API 생성 클릭 REST API 의 구축 선택 프로토콜 선택 : REST, 새 API 생성 : 새 API 을 선택 (기본값) API 이름을 입력하고 (예: DynamoDB) API 생성 클릭 STEP 2 : DynamoDB 사용을 위한 IAM 역할 생성 API Gateway를 통해 DynamoDB에 접근하기 위해서 역할 을 생성해줘야함. 상단 검색바에 IAM 검색 및 접속 좌측 ..

Today_I_Learned 2023.10.14

multiprocessing를 통한 병렬 처리 파이썬 코드 예제

데이터 처리에서 2~3배 정도 성능 향상을 목표로 사용할 수 있는 테크닉. 데이터 저장 시 multiprocessing.Queue를 꼭 사용해야함 (공식 문서 참고) # !pip install finance-datareader -q from multiprocessing import Pool, Queue, cpu_count import FinanceDataReader as fdr import time # 테스트에 쓸 데이터 목록 top50 = fdr.StockListing('ETF/KR').Symbol.head(50) # 일반 처리 start_time = time.time() [fdr.DataReader(symbol) for symbol in top50] print(f'NORMAL : {(time.time..

Today_I_Learned 2023.09.30

네이버 증권 ETF 시세 정보 및 항목 리스트 API 조회 파이썬 코드 예제

네이버 증권의 ETF 시세 정보의 API에 접근하는 코드 FinanceDataReader에 유사한 접근할 수 있는 기능이 있지만, 단순 이름만 제공하고 시가총액 등 세부 내용엔 접근할 수 없다. import requests import pandas as pd def get_etf_item_list(): # 데이터 요청 URL = 'https://finance.naver.com/api/sise/etfItemList.nhn' response = requests.get(URL) data = response.json().get('result').get('etfItemList') # 테이블화 & 컬럼 정리 df = pd.DataFrame(data) df.columns = ['종목코드', '카테고리', '종목명',..

Today_I_Learned 2023.09.30