분류 전체보기
[프로그래머스] 멀쩡한 사각형 /파이썬 /python /최소공약수
💡solutions ) ✅ 공식을 못 찾겠어서 다른 분들 풀이를 참고했다. 대각선에 걸쳐지는 정사각형의 개수는 "w+h - (w*h - w와h의 최소공약수)" ✅ math 모듈을 사용해 최소공약수(gcb)를 구할 수도 있지만 직접 함수를 구현했다. 🎫code ) def solution(w, h): def getGcd(w,h): if (h == 0): return w return getGcd(h, w % h) return w * h - (w + h - getGcd(w, h)) 📌 description ) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/62048?language=python3 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세..
[프로그래머스] 스킬트리 / 파이썬 / python
💡solutions ) ✅ 공백이 없는 문자열을 하나씩 끊어서 리스트 요소로 만들 때는 list(str) 사용하기 str = "abc", list(str) = ["a", "b", "c"] (단, 공백 있으면 split 사용) ✅ skill에 있는 것들만 모아서 tmp에 담고 skill리스트와 tmp리스트 값 비교하기 ✅ 길이가 같은 경우는 바로 cnt + 1, 다른 경우에는 첫 번째부터 값을 비교하기 -> 문제 푼 후에 skill 리스트의 pop(0)값 하고만 비교하면 된다는 걸 알았다. (맨 앞을 선행하지 않는다는 건, 결국 가능한 스킬트리가 아니기 때문) 🎫code ) def solution(skill, skill_trees): skill = list(skill) cnt = 0 for st in sk..
[프로그래머스] 오픈채팅방 / 파이썬 / python / 딕셔너리 배열
💡solutions_ ✅ 모든 유저의 닉네임을 저장하는 name_list 딕셔너리(key는 고유한 유저아이디로, value는 닉네임으로 저장), 유저들의 행동(입장, 퇴장)을 저장하는 action_list 리스트, 최종 결과 값을 저장하는 result 리스트 만듬 ✅ 각 입력값은 '행동 유저아이디 닉네임' 순으로 공백을 기준으로 split ! ✅ 두 가지 if문 ① 이름을 변경하는 경우인지 확인 -> enter, change -> name_list에 새로 이름 생성하거나 이름 변경하기 ② 들어오거나 나가는 경우인지 확인 -> enter, leave -> action_list에 행동 기록하기 🎫code_ def solution(records): name_list = {} action_list = [] re..
[Vue.js] Vuetify 사용방법
프로젝트에서 프론트엔드 역할을 맡아 Vue.js로 작업하고 있다. 그래서 Vuetify를 공부하며 열심히 활용하고 있는 중이다. 처음에 뭔지 하나도 모르다가 직접 사용해보니 굉장히 편하다고 느꼈다. 디자인적 요소는 깔끔한 편이라 나처럼 디자인 요소를 꾸미기 힘들어 하는 사람에게 뷰티파이를 적극 추천한다. 1. Vuetify 시작하기(설정 방법) vue-cli를 사용해 vuetify 패키지를 vue프로젝트에 추가하기 🔵 cli 사용해 vue프로젝트 생성한 후에 해당 프로젝트로 이동해서 vuetify를 add 하기 * 프로젝트 진행 도중에 추가하게 되면 폴더 구조가 바뀔 수 있으니 가급적 프로젝트 시작할 때 추가하기 명령어=> vue add vuetify 🔵 plugins/vuetify.js가 생성되고, m..
[프로그래머스] 소수찾기 / Python / 효율성 테스트
✔ 문제 설명 - 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. - 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.(1은 소수가 아닙니다.) ✔ 제한 조건 - n은 2이상 1000000이하의 자연수입니다. 아래는 처음 제출한 코드이다. 효율성 테스트에서 통과하지 못하고 시간초과. def solution(n): answer = 0 arr = [0] * (n+1) for i in range(2, n+1): if arr[i] == 1: continue for k in range(2, i+1): if i % k == 0: if i != k: arr[i] = 1 break else: answer += 1 for j in range(i, n+1, i)..
[Vue.js] 네 번째 정리(props, emit)
0. 부모와 자식 간에는 단방향 바인딩만 가능하다(단방향 데이터 흐름) -> why? 자식은 부모의 데이터에 접근하거나 데이터를 변경할 수 없어야 한다. (데이터 흐름이 꼬일 수 있기 때문이다) 단지 이벤트만 보낼 수 있다. 자식은 커스텀 이벤트를 방출하면 부모는 이벤트를 리스닝(@)하여 어떠한 행동을 한다(함수 실행 등) 1. props & emit - 분리된 상태의 부모, 자식 컴포넌트 간 긴밀히 소통해야 할 때가 있는데, 이때 필요한 것이 컴포넌트 통신. 즉 props와 emit이다. - 컴포넌트 통신 규칙은 각 컴포넌트가 독립성은 유지하면서 데이터 흐름이 규칙적이게 하기 위함 - props는 부모에서 자식으로 데이터를 전달하기 위해 사용 - emit은 자식이 부모에게 데이터를 전달하기 위해서 이벤..
[Vue.js] Dynamic Route Matching(동적 라우트 매칭)
해당 유저의 마이페이지에 url로 접근하는 경우 동일한 url 패턴을 보이게 된다. 예를 들어 /user/yeji 또는 /user/deokgi 처럼 비슷한 패턴의 url이 동일한 컴포넌트에 매칭되는 경우 동적 라우트 매칭을 사용한다. 동적 세그먼트는 콜론(:)부터 시작해서 작성하는데 예를 들었던 /user/yeji, /user/deokgi 에서 yeji, deokgi 처럼 바뀌는 부분이다. 나는 인스타 클론코딩을 할 때 유저 페이지에 동적 라우트 매칭을 사용했다. 아래는 인스타 클론 코딩에서 사용한 동적 라우트 매칭👇 // router- index.js에 경로 설정 Vue.use(VueRouter) const routes = [ { //dynamic route matching path:'/:usernam..
[Vue.js] 세 번째 정리 (프로젝트 생성 초기 설정)
지난 번까지 뷰에 대한 기본적인 것, 개념들을 공부했다면 이번엔 뷰 프로젝트를 직접 생성해봤다. [Vue 사용하기 전 초기 환경 설정] 1. 우선 node.js 설치 -> node.js는 무엇일까? 원래 javascript는 원래 웹 브라우저 환경에서만 동작하는데, 이때 node.js가 우리가 사용하는 컴퓨터 환경에서도 javascript를 사용해 개발할 수 있도록 만들어 주는 플랫폼이다. (node.js는 자바스크립트를 웹 브라우저 속에서만 사용되던 언어에서 범용 스크립트 언어로 탈바꿈 시켰다는 점에서 의미가 있다) -> node.js의 가장 큰 특징은 단일 스레드 모델, non-blocking 이라는 것 -> 노드 설치 후 버전 확인: node -v 2. npm (Node Packaged Module..
[Vue.js] 두 번째 정리 (비동기, non-blocking, computed, watch)
✔ 둘째 날, Vue Basics - 배운 내용 정리 콜백함수를 쓸 때는 화살표 함수를 사용한다. json-server의 paginate 기능 사용 배열 합치는 방법 3가지 👇 1. concat() 2. spread 스프레드 : arr3 = [...arr1, ...arr2] -> 스프레드가 가장 빠르고 효율적임 3. push와 spread 사용 : arr4= arr.push(...arr2) Vue instance 생애주기👇 [Vue Instance Lifecycle Hooks] 뷰 인스턴스는 created -> mounted -> updated -> destroyed 순으로 생성됐다가 소멸되는 생애주기를 갖는다. non-blocking 하게 동작하는 코드 두 가지 1. axios 2. setTimeout..
[Vue.js] Vue 시작하기 (directive 정리)
첫째 날, Vue Intro el은 뷰 인스턴스의 속성이며 어떤 HTML 요소에 mount할 지를 결정하는 요소. data는 객체이며 MVVM 패턴에서 Model에 해당하는 것. 뷰인스턴스의 핵심이 된다. interpolation/ 보간법/ {{ }} => 인스턴스에 있는 데이터를 순수 문자열 형태로 보여줄 때 사용한다. methods는 함수들의 집합 syntactic sugar => methods 안에 정의된 함수에서 : function()은 생략할 수 있다. v-on: 는 ' @ '로, v-bind: 는 ' : '로 줄여서 숏컷으로 쓰기. v-text="message" 와 {{ message }}는 완전히 같음. v로 시작하는 요소들은 directive(디렉티브)는 엘리먼트에게 어떤한 행동을 하라고 ..
0608_백준 1051번 : 숫자 정사각형/ 부르트포스 알고리즘/ Python
[코드 구현] n, m = map(int, input().split()) arr = [list(map(int, input())) for _ in range(n)] res = 0 for i in range(n): for j in range(m): for k in range(n if n < m else m): # 행과 열 중 더 작은 것을 기준으로 정사각형 탐색 if i+k < n and j+k < m: # 주어진 인덱스 벗어나지 않게 if arr[i][j] == arr[i][j+k] == arr[i+k][j] == arr[i+k][j+k]: # 꼭짓점의 숫자가 모두 같은 지 확인 if res < k: res = k print((res+1)*(res+1)) [문제 출처] 백준 1051번 숫자 정사각형 : h..
0529_백준 15684번 : 사다리 조작/ 완전탐색(Brute-Force)/ Python
[문제 접근] - 브루트포스(완전탐색) 문제 - 사다리를 놓는 함수와 사다리를 놓은 후 모든 세로선이 자기 번호로 도착하는 지 확인하는 함수 두 가지로 프로그램을 짰다. [코드 구현] # 사다리에 가로선을 놓는 함수 def dfs(start, cnt): global res if cnt == min_cnt: if check(): res = cnt return for i in range(start, h): for j in range(n-1): # ij 위치에 사다리가 있지 않고, 전후로도 사다리가 없으면 if not ladder[i][j-1] + ladder[i][j] + ladder[i][j+1]: # 사다리 놓기 ladder[i][j] = 1 dfs(i, cnt+1) # 함수 재귀 끝나면 사다리 다시 빼..