본문 바로가기

분류 전체보기

(34)
[CSS,JS] 동적 색상값(HEX) 얻기 디자이너 없이 작업할 경우 간혹 다양한 컬러값이 필요한 경우가 있다. (토이프로젝트, 백오피스 데모 같은) 근무하는 동안에도 몇 번 활용했고, 토이프로젝트에서도 활용하게 되어 기록하고자 한다. #1. 랜덤 hex 생성의 기본 로직 hex를 생성하는 랜덤함수는 아래와 같다. const hex = '#' + Math.round(Math.random() * 0xffffff).toString(16); 무작위성 난수가 필요하므로 Math.random() 을 이용하여 0~1사이의 랜덤값 추출 0xffffff 값 (수) 만큼 값을 곱하여 n개의 정수 추출 Math.round() 를 이용하여 소수점 제외 난수로 얻은 값의 미세한 값변화를 필요로하지 않는다면 Math.ceil, Math.floor 모두 사용가능 .toS..
[해커랭크] (Implementation Algorithms) Number Line Jumps (javascript) 캥거루 두마리가 각각 다른 위치에서 다른 속도로 점프할 경우, 같은 시간에 같은 위치에 존재하는 여부 반환 규칙 첫 번째 캥거루의 시작 위치는 x1, 이동간격은 v1 두 번째 캥거루의 시작 위치는 x2, 이동간격은 v2 ex) x1 = 0, v1 = 3 / x2 = 4, v2 = 2 제한사항 0 ≤ x1 ≤ x2 ≤ 10000 1 ≤ v1 ≤ 10000 1 ≤ v2 ≤ 10000 나의 풀이 두 번째 캥거루의 이동간격이 첫 번째 캥거루 보다 큰 경우는 평생 동일 시간대에 만날 수 없음 두 캥거루가 만날 때 까지 확인하기 위한 범위값 구하기 대략 (첫 번째 캥거루의 시작위치 + 이동간격) * (두 번째 캔거루의 시작위치 + 이동간격) 값 안에서는 구할 수 있지 않을까 생각 최소한의 범위로 구하고자 제곱근 ..
[해커랭크] (Implementation Algorithms) Grading Students (javascript) 학생 등급 채점 규칙 학생이 받는 등급범위는 0~100 등급이 40보다 작은 경우 낙제 입력된 등급의 다음 5배수 값을 구하여, 그 차가 3보다 작을 경우 5배수값으로 등급 조정 등급이 38보다 작은 경우 반올림하지 않음 (계산해도 낙제이기 때문) 제한사항 1 ≤ n ≤ 60 0 ≤ grades[i] ≤ 100 나의 풀이 등급이 38보다 작은 경우 자체 점수 반환 5배수 구하기 Math.ceil({val}/5)*5; 5로 나눈 정수값 * 5 ( 반올림 - round, 올림 - ceil, 버림 - floor) 5배수와 기존 등급의 차가 3보다 작을 경우, 5배수값으로 등급 조정 아닌 경우 자체 점수 반환 // 생략 /* * Complete the 'gradingStudents' function below...
[해커랭크] (Constructive Algorithms) Flipping the Matrix 2nx2n 정수 행렬 게임 2nx2n 행렬이 주어졌을 때, 행 또는 열을 뒤집어 2사분면에 위치하는(nxn) 행렬의 합의 최댓값 구하기 조건 전달되는 행렬은 반드시 2nx2n의 2차원 배열, 각 인자는 정수 제한사항 1 ≤ q ≤ 16 1 ≤ n ≤ 128 0 ≤ matrix[i][j] ≤ 4096 (단, 0 ≤ i, j ≤ 2n) 나의 풀이 문제자체를 이해하지 못하여 다른 개발자들의 풀이를 찾아봄 원본 링크: https://singo112ok.tistory.com/35 python 풀이이긴 하나, 작성한 내용을 보고 얼마나 간결하게 풀이했는지 알 수 있었음 복잡한 로직을 간단하게 풀 수 있는 해법이 기발하여 기록하고자 함 타 개발자의 풀이내용을 내가 이해한 대로 설명 그림 1. 처럼 2nx2n 행렬에서..
[해커랭크] (1 Week Day 1) Time Conversion (javascript) 주어진 12시간제의 값을 24시간제로 변환 조건 12:00:00PM은 12시간제, 12:00:00은 24시간제 표기 제한사항 입력되는 시간은 모두 유효 나의 풀이 더 간결한 코드로 만들 수 있을 것으로 보임 ':'로 구분하여 hh, mm, ss(+PM|AM)으로 파싱 hh : 12시간제 시간 mm: 분 ss: 초 HH: 24시간제 시간 PM|AM에 여부에 따라 시간계산 처리 PM hh 값이 12가 아닌경우 '12 + hh' AM hh 값이 12인 경우 '00' // 생략 /* * Complete the 'timeConversion' function below. * * The function is expected to return a STRING. * The function accepts STRING s..
[해커랭크] (1Week - Day 1) Mini-Max Sum (javascript) 주어진 배열 arr(n) 에서 n-1 개 합의 최소, 최대 구하기 조건 배열은 5개의 정수를 가짐 5개의 정수 중 4개의 정수를 선택하여 합한 값이 최소, 최대일 경우 출력 제한사항 1 ≤ arr[i] ≤ 10⁹ 나의 풀이 조합(combination, nCr)을 이용하여 풀이 for loop를 이용하여 배열 길이만큼 순환 배열에서 i 번째 값을 제외한 n-1개의 정수를 더한 값을 각각 min, max와 비교하여 출력 // 생략 /* * Complete the 'miniMaxSum' function below. * * The function accepts INTEGER_ARRAY arr as parameter. */ function miniMaxSum(arr) { // Write your code here..
[해커랭크] Day 4: Classes Polygon class 만들기 조건 생성자는 polygon 변수 만큼 길이값 배열을 받음 perimeter() 메소드는 polygon의 둘레값을 전달 나의 풀이 class Polygon {} 생성 points : polygon 변 길이 배열 constructor 생성 this.points에 인자로 받은 points 바인딩 peremeter 메소드 생성 reduce를 이용하여 둘레 계산 /* * Implement a Polygon class with the following properties: * 1. A constructor that takes an array of integer side lengths. * 2. A 'perimeter' method that returns the sum of the ..
[해커랭크] Day 9: Binary Calculator (javascript) 이진수 계산기 만들기 - html, css, script 작성하기 조건 제한사항 지정된 ID, css 부여할 것 모든 표현식은 operand1 -> operator -> operand2 형식으로 입력 operand1 : 첫 번째 이진수 operator : 연산자 집합 {+, -, *, =} --> {+, -, *, /} ? operand2 : 두 번째 이진수 두 피연산자는 이진수에서 십진수로 변환 시 항상 양의 정수 모든 표현식이 유효함 나의 풀이 정규식을 통해 피연산자와 연산자를 분리 연산자 정규식: /[^0-1]/gi 피연산자 정규식: /[[0-1]/gi 2진수를 10진수로 변환: parseInt(a, 2) 10진수를 2진수로 변환: a.toString(2) 문자열의 연산을 처리: eval() eva..