문제https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr설계- bucket을 활용 pythondef solution(board, moves): answer = 0 bucket = [] for move in moves: for i in range(len(board)): if board[i][move-1] > 0: # index는 0부터 시작, 1을 빼준다. bucket.app..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 단계별 구현력을 요구하는 문제라고 생각했다. 풀이 - 2단계는 아스키 코드를 사용하여 1중 for문으로 제거했다. - 테스트케이스를 절반 이상 틀렸는데 3단계 마침표 중복 치환을 수정하고 통과했다. def solution(new_id): # 1단계 : 모두 소문자 new_id = new_id.lower() # 2단계 : 사용 불가능 문자 제거 arr = list(new_id) for..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 그런것 없고 그냥 깡 구현하려고 했다. - 나름대로의 로직을 순서대로 정하고 접근했지만, 결국 테스트케이스 중 2개가 시간초과 때문에 통과하지 못했다. # 시간초과로 통과하지 못한 코드 def solution(id_list, report, k): N = len(id_list) answer = [0] * len(id_list) # 편지함 person = [[] for _ in rang..
프로젝트를 진행하면서 크롬 개발자 도구에서 console.log()를 확인할 경우 console 창에 2번 출력되는 경우가 있다. 왜 2번씩 출력되는 것인가? 그 이유를 구글에서 확인할 수 있었다. Strict Mode console.log가 2번 출력되는 이유는 프로젝트의 src/index.js 파일에서 태그 때문이다. StrictMode는 애플리케이션 내의 잠재적인 문제를 알아내기 위한 도구이다. Fragment와 같이 UI를 렌더링하지 않으며, 자손들에 대한 부가적인 검사와 경고를 활성화한다. 즉, 잠재적인 문제가 있는지 확인하기 위해서! 또한, Strict 모드는 개발 모드에서만 활성화되기 때문에, 프로덕션 빌드에는 영향을 끼치지 않는다. ★ StrictMode는 아래와 같은 부분에서 도움이 된다..
문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 설계 - 첫번째 조건 : 회의가 빨리 끝날수록 뒤에 회의를 많이 잡을 수 있기 때문에 회의가 빨리 끝나는 시간을 최우선으로 정렬한다. - 두번째 조건 : 회의 시간이 (1, 3), (3, 3)일 경우 먼저 1시에 회의를 먼저 하고 끝내야 3시 회의를 하여 회의를 2번 할 수 있다. 때문에 회의 종료시간이 같을 경우 빨리 시작하는 기준으로 정렬한다. - 위 두가지 조건을 모두 종합했을 때 시작시간 기준 정렬 → 종료시간 기준 정렬을 해야만 우리가 원하는 위 두가지 조건을 만족시킬 수 있다. N = int(in..
구글폰트를 적용하는 방법은 2가지가 있다. import로 불러와 적용하는 방법 다운로드 받은 후 프로젝트 안에 폰트를 넣는 방법 1번의 방법은 매번 import 해오기 때문에 랜더링시 좀 더 느리다고 한다. 때문에 직접 다운로드하여 사용하는 방법을 적용 해보기로 했다. 1. 구글 폰트 사이트에서 원하는 폰트를 선택하여 다운받는다. 구글 폰트 사이트 : https://fonts.google.com/ 2. 폰트를 모아놓을 폴더를 만들어 저장한다. 폴더 위치는 자유롭게 가능하다. ex) src/fonts/폰트.ttf 3. App.css 파일 안에 사용할 폰트들을 불러온다. 저장한 font를 어디에서나 사용할 수 있게 최상단 파일인 App에 정의했다. @font-face { font-family: [사용할 폰트..
문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 설계 - 보통 이분탐색은 최소한의 횟수로 목표를 찾는 것이다. - 이번 문제는 공유기를 설치할 거리를 이분 탐색으로 결정하여 공유기 사이의 거리가 mid값 이상인 경우 공유기를 설치할 수 있다. - mid값 이상의 간격으로 공유기를 설치했을 때 공유기의 개수가 모자라다면 mid 값을 줄여주고, 설치해야하는 공유기의 개수가 너무 적다면 mid..
리엑트 components를 생성하고 Route를 사용하여 링크를 연결하려고 했는데 오류가 발생했다. import './App.css'; import Home from "./components/Home"; import Parking from "./components/Parking"; import Search from "./components/Search"; import {BrowserRouter, Switch, Route} from "react-router-dom"; function App() { return ( ); } export default App; 처음에는 구글링을 하여 Switch로 route를 구현했는데 react-router-dom에는 없는 기능이라는 오류가 발생했다. 다시 검색을 해보니 ..
문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 설계 - flood fill - 토마토가 모두 익는 최소 날짜를 구하여야 하기에 DFS도 생각해봤으나 N, M의 수가 너무 커서 불가능 - flood fill을 이용하여 아직 익지 않은 곳에 이전보다 1 큰 숫자를 누적하며 넣어주고 마지막에 max 값을 찾아 소요일을 확인한다. - 생각보다 코드가 길게 나왔다. 다음에는 더 줄이도록 해봐야겠다. from collections ..
문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 설계 - 이분탐색 - 처음에는 2중 while문을 이용하여 전선의 개수를 카운트, 시간초과 - cnt += line // mid 를 이용하여 while문 대신 한번에 cnt 계산 - start = 1로 해야 cnt += line // mid 에서 mid가 0이 되지 않는다. # 랜선 자르기 K, N = map(int, input().split()) arr = [i..