반응형

분류 전체보기 316

[프로그래머스, Java] Level3 : 파괴되지않는 건물

문제분석 문제설명이 상당히 긴 문제 근데 비교적 간단하다. 요점은, 스킬들이 Type으로 공격과 치유를 구분하고, 범위와 강도가 주어진다. 공격과 치유를 적용한뒤, 파괴되지않는 건물을 리턴하면된다. 이게끝? 맞다 이게끝이다. First Try: 2차반복문 사용 누구나 생각할 풀이방법이다. 스킬을 순회하며, 각 스킬마다 적용되는 범위에다 강도를 빼주거나 더한다. 그후, 마지막에 파괴된건물이 있는지 한번확인한다. 이렇게 하면 정확성은 100%다. 실제 카카오 테스트때도 50%응시자가 이와같은 코드를 짯다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 class Sol..

React App을 생성해보자.

React가 자바스크립트의 라이브러리로, 그냥써도 좋지만 더 간편하고 효율적인 코딩환경을 지원하는 기술이 있다. 리액트 팀에서 지원하는 Creat-React-App 기능이다. 얻을수 있는이점 1.코드의 변경이있으면 브라우저 화면에 컴파일없이 즉시 반영을 해준다. 2.리액트에서 자동으로 서버를켜줌 3.빌드도 지원해줌. 4. 테스트도 지원해줌 등등.. 즉시 사용해보자. 우선 사전작업으로 Node.js라는걸 설치해야한다. npm이란 패키지 관리자를 사용하기위함이다. https://nodejs.org/en/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 여기서 LTS버전을 다운받는걸 추천한다. ..

자바스크립트 2023.01.28

[프로그래머스,Java] Level2: 무인도 여행

문제분석 완전탐색의 국룰과 같은 4방향 탐색 문제다. 문제대로 상, 하 ,좌, 우를 탐색해가며 식량을 더해가면되지만, 여기서 특수한룰이, 섬이 분리되어있으면 섬마다 식량의 갯수를 구해줘야한다. 우선 4방향 완전탐색에서 해야할일은 다음과같다. 1. 방문을체크할 boolean[][] -> 방문체크를안하면 무한루프를 돈다. 2. 재귀를 돌릴 재귀메소드 작성. -> 재귀의 탈출 및 예외조건을 유의해야한다. 3. 추가로 이 문제에서 묻는 섬마다 분리시키는법 우선 분리한 아일랜드의 식량합계를 담는 island 배열과 식량의 합계를 저장할 sum과 방문을 체크하는 visited를 선언했다. visited는 섬의 크기만큼 늘려준다. 이제 하나의 섬을 탐색할 스타팅 포인트를 찾을것이다. 포인트가 "X"가 아니면 숫자니,..

[프로그래머스,Java] Levle2: 숫자 변환하기

문제분석 딱 보자마자 DP 문제임을 눈치채면 성공 근데 필자는 BFS로 풀었다. 뭔가 BFS가 좀더 효율적인거같아서 햇는데, 결국 빅데이터일수록 DP가 더 빠르더라.. BFS는 레벨을 기준으로 너비탐색을 한다. 필자는 레벨을 연산횟수와 동일하게보고 BFS를 진행했다. 같은 연산을 여러번하는걸 막기위해 Boolean체크도 잊지않게 해주면된다. 전체 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import java.util.*; class Solution { public int solution(int x, int y, int n) { int answer = 0; if(x==y){ retu..

[프로그래머스,Java] Level2: 뒤에 있는 큰수

문제분석: 아주 간단한문제다 각 인덱스마다 뒤에있는 더 큰 숫자를 반환하고, 없으면 -1를 반환하면 간단한 문제이지만.. 제한사항을 보면 길이가 100만이다. 이걸 보고 빠르게 2차반복문으로 쉽게 풀생각을 접어야한다. 어떻게든 1차 반복문으로 문제를 해결하자. 1차반복문으로 해결하려면 다음과 같은 정보가 필요하다. 1. 해당 인덱스의 숫자가, 앞의 숫자들에게 영향이 끼치는지? -> 예를들어, 3 3 5 6 과같은 숫자배열에서 5인숫자가 앞의 숫자들 3 에게 영향이 간다. 2. 해당 인덱스의 숫자가, 뒤의 숫자보다 작은지? -> 예를들어 3 3 5 6 과 같은 숫자배열에서 5인 숫자는 앞의숫자 6보다 작다. --> 1번을 해결하기위해 Stack이란 배열을 사용했다. 필자는 스택에 int[] 배열로 {해당 ..

React 개요

React.js는 Javascript 의 라이브러리로써, 자바스크립트를 더욱 쉽게 개발할수있게 나온 기술이다. Jquery vs React? 이런 특징이 있다. 여기서 jQuery가 왜 더 느리고 , React가 좀 더 빠른지 코드를 보면 알 수 있다. JQuery 여기서 JQuery문법은 사용되지않았지만, 실행되는 원리는 같다. (JQuery는 가독성좋게 체인형식으로바꿔주는것) 다음과같은 처리방식이다. 1. 우선, body에서 요소를 가져옴 2. 그 요소를 가져와서 만들어둔 함수를 이벤트리스너로 넣어줌. 3. 해당요소를 다시 html에 업데이트 한마디로 개발자가 직접 DOM 요소를 뽑아와 수정하고 뿌리는형식이다. 이와 같은 방식을 요청이 들어올때마다 반복한다. React React는 다음과같은 동작방식..

자바스크립트 2023.01.25

[프로그래머스,Java] Level3: 표현 가능한 이진트리

문제분석: 일단 문제부터 이해하는게 난관이다. 규칙: 1. 어떤 수가 있다면, 그걸 이진수로 바꾼다. 2. 표현된 이진수로 포화이진트리를 만든다. {1 이면 있는노드 , 0이면 비어있는노드} 3. 만약 2번으로 포화이진트리가 안된다면, 0을반환, 된다면 1을반환한다. 단기간에 풀기에 조금 벅찬 느낌의 문제다. 일단 먼저 1번 과정을한다. 이진수로 바꾸는 과정이 필요하다. 흔한 이진수 로직이다. 하지만, 우리는 포화이진트리를 만들어야하기 때문에 포화이진트리의 갯수만큼 이진수를 늘려줘야한다. {비어있는부분을 0으로} 문제에서 요구하는건 포화이진트리를 만들어서 되는지를 묻기때문이다. 2번스텝으로 넘어간다. 표현된 이진수를 포화이진트리가 가능하게 만든다. 포화 이진트리는 2^n -1 갯수이니 그만큼 더 늘려준다..

[프로그래머스,Java] Level3: 인사고과

문제분석 목표: 완호의 인센티브 순위를 구하라 규칙 1. 누군가의 근무태도와 동료평가가 다른사람의 두 요소보다 낮으면 인센티브 제외 2. 1번의 경우가아니라면, 근무와 동료평가점수를 합산해 랭킹을 매김 첫생각 규칙 1번에 의하여 제일먼저 떠오르는 해결방법은사람 2명을골라 비교하는 방법이다. 하지만, 제한사항을 보면 인원수가 10만명이다.(와우.. 어떤 회사가 10만명의 사원을..?) 10만*10만 = 100억이라서 조합을사용하는건 안된다. {아 근데, 이 문제는 가지치기를 잘 만하면 2차반복문 써도 풀리는거같다..} 즉, 1차반복문으로 해결을해야한다. 규칙1번처럼 사람과 사람마다 두 요소가 모두낮은지 확인해야하며, 2차 반복문을 사용하지 않는 방법은 꽤나 찾기 힘들다. 방법은 근무태도순대로 정렬하는것이다..

[프로그래머스,Java] Level2: 시소짝궁

문제분석 문제는 매우 간단하다 서로다른 weights 2개를 골라서 그 경우가 총 7개의 케이스 4:3 ,4:2,3:2, 1:1 ,2:3, 3:4, 2:4 인 경우를 판단하면된다. FirstTry : 문제대로 풀기 그냥 문제대로 풀었다. 2차 반복문으로 서로다른 사람의 몸무게를 2개 골라 case를 판별한다. case의 부합한다면 answer++를 증가시키는 간단하게 구현했지만.. 효율성에러 문제 풀고보니 제한사항이 사람의 몸무게 갯수가 10만까지 간다. 구글에 쳐보니 10만*10만이 100억이라고 한다. 당연히 걸릴만한 시간복잡도다.. Second Try: 1차 반복문으로 줄이기 1차 반복문으로 줄여서 구현해야한다. 여기서 생각난게 Arr또는 Map을 구현해서 정보를 저장해두는게 현명하다 보았다. 그 ..

파이썬 : 웹 스크래퍼 만들기(2)

지난 웹 스크래퍼에선 wwr에서 정보를 빼오는 메소드를 만들어봤다. 이제 이 메소드를 활용해 웹사이트를 간단하게만들어보자. 레블릿 웹사이트에서 Flask() 라이브러리를 사용하면, 레플릿이 알아서 서버를 개통해준다. app.run(" ")을 통해 열고싶은 포트를 입력해주면 콘솔과 웹창을 띄어준다. @app.route() 는 RESTAPI 요청을 컨트롤하는 메소드다 다음과 같은 경로가 입력되면 아래에 있는 함수를 호출한다. Flask의 render_template으로 html을 호출할수있다. 호출하는 html은 다음과같다. render_template은 html을 호출함과동시에, 정보를 함께 담을수있다. 본인은 이름도 함께 입력해서 보냈다. Flask에서 변수를 {{}} 쌍 중괄호로 인식을한다. 장고 템플..

반응형