분류 전체보기 26

[OOP]ORM(Object-Relational-Mapping)

ORM이란?ORM(Object Relational Mapping)은 객체 지향 프로그래밍과 관계형 데이터베이스를 연결하는 기술입니다. ORM은 객체지향 프로그램과 관계형 데이터베이스의 다리를 만드는데 주로 사용되는 기술로 객체와 데이터베이스 간의 상호 작용을 쉽게 만들어줍니다.   ORM을 왜 쓸까?객체지향 언어를 사용하여 데이터베이스와 상호 작용할 때는 데이터베이스에서 데이터를 생성, 읽기, 업데이트, 삭제(CRUD)와 같은 다양한 작업을 수행해야 합니다.  관계형 데이터베이스는 이런 작업을 수행하기 위해서는 설계상 SQL을 사용하게 되는데,SQL을 사용하는 것은 나쁜게 아니지만 ORM은 이러한 작업을 객체지향적으로 더 간단하게 처리할 수 있도록 도와줍니다. 예를 들어, SQL 쿼리를 사용하면 아래와 ..

Programming 2024.06.28

[지식 한 입] Java는 웹 개발을 목적으로 개발된 언어가 아니었다

Java는 백엔드를 지망하면 Java를 배우라는 말이 있을 정도로 대한민국에서 대표적인 백엔드 언어로 자리 잡았지만 자바는 사실 웹 개발을 목적으로 개발된 언어가 아니었다. 📜 Java의 전신 Oak자바의 시작은 Oak(오크)라는 이름으로 시작되었습니다. Oak는 제임스 고슬링이 임베디드 시스템 개발을 목적으로 개발한 언어입니다. 프로그래밍을 할 때, 만드는 프로그램이 어떤 하드웨어 아키텍처인지, 어떤 운영체제에서 돌아가는지 알아야 합니다. 예를 들어, x86 아키텍처와 ARM 아키텍처는 명령어 세트가 다르고 동일한 프로그램이라도 서로 다른 기계어로 컴파일이 되고, C언어에서 Unix/Linus운영체제에서의 long 데이터 타입은 8바이트이지만, 윈도우에서는 4바이트이듯 하드웨어, 운영체제의 차이에 따..

Programming 2024.06.24

[Git] 쉽게 Github 인증 뱃지 unverified를 verified로 바꾸기

약 반년 전 즈음에 처음 깃 서명을 알게 되었고 verified라는 깃헙 마크가 갖고 싶어서 깃헙 공식 문서를 보고 따라 했었던 기억이 있다. 당시 중간에 잘못 따라한 부분이 있었던 것인지 unverified가 떴었다. 이 문제를 오랜만에 해결해보고 싶어서 다시 공식 문서를 톺아보며 해결한 나의 간단한 방법을 작성해 보겠다. (깃헙 공식 commit signature verification 문서)https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification About commit signature verification - GitHub DocsUsing GPG..

Programming 2024.06.22

[JAVA]숫자 야구 - 숫자 맞추기 논리 게임 그리고 트러블 슈팅

처음 프로그래밍 공부를 시작할 때 자바스크립트를 배우면서 만들어봤던 숫자야구를 약 1년 만에 새로운 언어 자바를 통해 다시 만들어보게 되었다. ⚾ 1. 게임 규칙컴퓨터는 0과 9 사이의 서로 다른 숫자 3개를 무작위로 뽑습니다. (ex) 123, 759사용자는 컴퓨터가 뽑은 숫자를 맞추기 위해 시도합니다.컴퓨터는 사용자가 입력한 세 자리 숫자에 대해서, 아래의 규칙대로 스트라이크(S)와 볼(B)을 알려줍니다.숫자의 값과 위치가 모두 일치하면 S숫자의 값은 일치하지만 위치가 틀렸으면 B기회는 무제한이며, 몇 번의 시도 후에 맞췄는지 기록됩니다.숫자 3개를 모두 맞춘 경우, 게임을 종료합니다. ⚾ 2. 설계 및 구현제일 먼저 떠오른 방법은 Main.java에 난수 생성을 통해 맞춰야 하는 정답 생성 후 사용..

Programming 2024.06.21

[Python] 밸런스 게임 회고

print("Hello World!") 이노베이션 캠프의 첫 주를 경험했다. 주어진 과제는 팀원들과 미니 프로젝트를 진행하는 것. 주제는 자유롭지만 주어진 기간이 단 3일이라 자체적으로 규모를 조절하게 되었다. 파이썬, Flask와 SQLite를 SQLAlchemy로 만드는 프로젝트를 시작하게 되었다.아이디어 회의약 3~4시간 정도 얘기하면서 팀원들과 무슨 아이디어를 할지에 대한 이야기를 나눴다. 해외 기술 블로그 웹 크롤링 및 번역해주기, 롤링 페이퍼, 밸런스 게임 정도가 나왔던 거 같고 최종적으로는 다른 조들의 참여를 유도할 수 있는 밸런스 게임이 적절하다고 생각돼서 밸런스 게임으로 주제를 선정하였다.UI와 ERD 그리고 APIUI는 워낙 작은 프로젝트이다보니 그림판을 사용하자는 의견도 있었지만 간단..

Programming 2024.06.19

백준 11726 2xn 타일링 파이썬 풀이

https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 문제이해 입력받은 n만큼 세로 2 가로 n길이의 직사각형에 1x2 혹은 2x1 타일로 채우는 방법의 수를 구하면 된다. n의 입력값이 1000이기에 O(n^2)로 풀어도 되겠다는 생각은 들었다. 접근법 완전탐색을 사용하려 보니 재귀함수를 사용해야할거 같다는 생각으로 이어졌다. 하지만 파이썬에서는 기본적으로 재귀함수의 깊이 제한이 걸려있기 때문에 dp를 사용해야한다. 그래서 dp방법으로 풀이를 해보고자 했다. 코드 im..

알고리즘 2024.02.07

백준 1181 단어정렬 파이썬 풀이

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 이해 여러 단어들이 입력된다. 단어를 길이 순서로 출력하되 만약 같다면 사전 순으로 출력하면 된다. 단어의 개수는 최대 20000개까지 했으니 O(n^2)로 풀 경우 시간 초과가 뜰 수도 있겠다는 생각을 갖고 접근했다. 접근법 어떻게 풀어야할지 감이 안와서 일단 완전탐색으로 구현해보기로 했다. 문자열의 길이를 측정하고 그 길이에 따라 정렬하는 방식이다. 코드1(완전탐색) impor..

알고리즘 2024.02.07

백준 1003 피보나치 함수 파이썬 풀이

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 이해 피보나치 함수 문제는 피보나치를 재귀함수로 풀었을 때, 0과 1이 각각 몇 번씩 등장하게 되는지에 대한 문제이다. 문제에서는 코드 예시를 C언어로 해두었다. 문제에 들어가기 전에 파이썬은 재귀함수를 사용할때 늘 깊이에 대한 생각을 하지 않을 수 없다. 왜냐하면 파이썬 언어 내부적으로 재귀함수의 깊이를 1000회로 제한을 두었기 때문이다. https://url.kr/s72w3t 백준 1676 팩토리얼 0의 개수 파이썬 풀이 - recursionError https://www.acmic..

알고리즘 2024.02.07

백준 1676 팩토리얼 0의 개수 파이썬 풀이 - recursionError

https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 코드 1 def factorial(num) : if num == 1: return 1 else : return (num * factorial(num - 1)) n = int(input()) count = 0 num = factorial(n) num = [x for x in str(num)] for i in range(len(num) - 1, -1, -1): if num[i] == '0' : count += 1 elif num[i] != '0' : break print(count) 처..

알고리즘 2024.01.19

백준 10992 별 찍기 - 17 파이썬 풀이

https://www.acmicpc.net/problem/10992 10992번: 별 찍기 - 17 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 코드 n = int(input()) for i in range(n) : print(" " * (n - 1 - i), end="") if i == n - 1 : print("*" * (2 * n - 1)) elif 0 < i < n - 1: print("*" + " " * (2 * i - 1) + "*") else: # i == 0인 경우 print("*") 풀고 나서 느낀점은 나는 별 찍기 문제를 풀 때, 따로 깊게 로직을 생각하지 않는다는 것이었다. 반복해서 출력되니 반복문을 사용하고, 공백이 별 밖에, 별 사이에 있고, 별..

알고리즘 2024.01.18