프롤로그 며칠 전 프로젝트를 진행하다 리뷰를 남기는 컴포넌트에 평점을 구현해야 했다. 일상 속에서 리뷰를 남길땐 아무 생각없이 사용하던 것인데 막상 구현하려니 ?!하고 당황스러웠다. 열심히 구글링한 결과 JavaScript까지 동원한 엄청난 코드도 많았지만 최대한 간단하게 적용하고 싶었다. 지금 프론트엔드 기술스택은 Vue를 사용하고 있는데 npm package로 vue-star-rating이라는 것이 있었지만 왠만하면 패키지를 사용하고 싶지 않았다... (사실 깔아서 적용시켜보려 했지만 mouse hover event가 안되서 다시 지웠다) 열심히 검색한 결과 원하는 대로 깔끔하게 구현된 코드가 있어 정리겸 글을 써본다 🧡 별점은 정적 구현과 동적 구현 두 가지가 있다. 정적 구현 사용자 리뷰나 평균 ..
완주하지 못한 선수 (level 1) 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 참가자 명단과 완주자 명단이 주어지는데 참가자 중 완주하지 못한 딱 한 명을 찾아내는 문제이다. 처음에 단순히 매칭만 하면 될 줄 알았으나 (당연히) 이중 for문으로 인해 시간초과가 났다 ㅎㅎ... 결국 풀이를 찾아보게 되었는데 단순히 정렬 후 인덱스를 하나씩 비교해가면서 다른 이름이 있다면 바로 그 값을 return하는 문제였다. 연습 겸 JavaScript로 풀었다. 풀면서 느낀 점은 JavaScri..
BFS지만 동시성을 생각해야 하는 문제 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 물과 고슴도치 각각 방문체크를 할 큐를 두고 물 → 고슴도치순으로 BFS탐색을 했다. Logic 데이터를 입력 받을때 고슴도치의 시작 위치를 hedgehog큐에 넣고 해당 map의 위치는 S에서 .으로 마킹한다. 물의 위치를 입력받을 경우 water 큐에 넣고 visited = true로 놓는다. BFS 탐색을 시작한다. while문은 더이상 고슴도치 무빙이 불가능할 때 까지 반복된다. 물부터 영역을 넓힌다. 큐 크기가 유동적이기..
문제에 나와있는 대로 구현하면 풀리는 정직한 시뮬레이션 문제 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 풀이 처음에 문제가 애매하다는 생각이 들었다. 이차원배열을 map이라 하면 map에 따로 떨어진 두 집단이 있을경우 이걸 각각 인구 이동횟수로 세야하는지 아니면 한 round당 횟수로 해야하는지 몰랐다. 그래서 질문게시판을 참고하니 후자인 한 round당으로 세는게 맞았다. 즉, map에서 인구 이동이 가능한 집단이 여러 개가 있어도 한 번으로 치는 것이다. 우선 BFS를 해야하므로 방문체..
두 가지 방법으로 풀 수 있는 문제 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 풀이 기본적으로 readLine() 으로 String을 입력받은 후 charAt(index) method를 이용하여 한 문자씩 비교한다. 1. StringBuilder의 substring(startIndex, endIndex), reverse() method를 이용한 풀이 mark라는 변수를 두어 >가 어느 위치에 있는지 기억한다. 문자열 길이만큼 반복문을 수행한다. substring method..
블록 모양별 case를 나눠 brute force 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 풀이 범위 실수만 안하면 무난하게 풀 수 있는 문제이다. 반복되는 부분을 줄이고 싶어서 아래처럼 공통되는 부분을 찾고 method화 하였다. 그리고 블록이 범위를 벗어나는 부분을 간편하게 처리하기 위해 이차원 배열 크기를 처음부터 넉넉히 설정하였다. 계속 틀렸습니다가 뜬다면 아래의 반례를 참고하도록 하자. 글 읽기 - 왜87%에서 틀렸습니다가뜰까요 ㅠ 도와줘요 코딩짱짱맨~~ 댓글을 작성하려면 로그인해야 합니다. w..
case를 나눠 구현하면 된다. 출력 형식에 유의! 2290번: LCD Test 첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다. www.acmicpc.net 풀이 이 문제는 전처리가 필요하다. 우선 표시되는 숫자 모양의 공통점을 찾았다. 그리고 case를 일일이 나눠 매핑될 수 있도록 매핑배열을 미리 선언하고 시작했다. 위의 그림처럼 숫자 10개별로 해당되는 부분을 체크했다. 그리고 ①~⑦의 영역 범위를 아래의 표처럼 S값과 left변수로 나타내주었다. 그 이후 fill method를 선언하여 범위와 채워 넣어야 하는 String 문자열을 인자로 해서 코드가 간결하게 보여지도록..
전형적인 시뮬레이션 문제. 조건을 잘 보고 구현하는 것이 중요하다. 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 풀이 처음에 문제 이해하는데도 시간이 걸렸다.. 막대기를 던진다고 해서 포물선으로 날아가는 모습을 떠올렸으나 그렇진 않고 해당 높이에 레이저 포인터를 쏜다고 생각하면 된다. 막대기 높이와 실제 2차원 배열상의 인덱스는 반대이므로 먼저 계산해서 처리해주면 된다. 클러스터를 어떻게 내릴 것인지 고민을 좀 했다.. 우선 클러스터가 되는 모든 미네랄 좌표를 ArrayList (mineral)에 넣어 저장하고 Comp..
- Total
- Today
- Yesterday
- 이분탐색
- 브루트포스
- java
- 문자열
- Validation
- 정규식
- CustomHook
- matches
- swea
- 백준
- 시뮬레이션
- 다익스트라
- 프로그래머스
- vue.js
- REACT
- 그래프
- 벨만포드
- web
- 해시
- BFS
- 구현
- regex
- 삼성역테기출
- form
- 우선순위큐
- BigInteger
- 백트래킹
- dfs
- 알고리즘
- dp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |