본문 바로가기

Coding test

(116)
[Softeer/Javascript] 징검다리 알고리즘 : LIS (이분탐색)const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const n = Number(input[0]);const stones = input[1].split(' ').map(Number);function bisect_left(arr, target) { let left = 0; let right = arr.length; while (left  LIS 알고리즘을 알고 있다면 간단한 문제
99클럽 코테 스터디 42일차 TIL, 프로그래머스 / 코딩테스트공부 🔑 오늘의 학습 키워드 : DP🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/118668 def solution(alp, cop, problems): max_alp, max_cop = 0,0 for p in problems: max_alp = max(max_alp,p[0]) max_cop = max(max_cop,p[1]) # 현재 alp와 cop가 목표보다 높을 경우를 대비 alp = min(alp, max_alp) cop = min(cop, max_cop) dp = [[1e9] * (max_cop+1) for _ in range (max_alp+1)]..
99클럽 코테 스터디 41일차 TIL, 프로그래머스 / 도둑질 🔑 오늘의 학습 키워드 DP🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42897 def solution(money): answer = 0 dp1 = [0] * len(money) # 첫 집을 털었을 때 dp2 = [0] * len(money) # 첫 집을 안 털고 두 번째 집을 털었을 때 dp1[0] = money[0] dp1[1] = dp1[0] dp2[1] = money[1] for i in range(2, len(money) - 1): dp1[i] = max(dp1[i - 1], dp1[i - 2] + money[i]) dp2[i] = max(dp2[i - 1]..
99클럽 코테 스터디 40일차 TIL, 프로그래머스 / 등굣길 🔑 오늘의 학습 키워드 DP🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42898# def solution(m, n, puddles): grid = [[0] * (m+1) for _ in range (n+1)] for x,y in puddles: grid[y][x] = -1 for i in range (1,n+1): for j in range (1,m+1): if i == 1 and j == 1: grid[1][1] = 1 elif grid[i][j] == -1: grid[i]..
99클럽 코테 스터디 39일차 TIL, 프로그래머스 / 로또의 최고 순위와 최저 순위 🔑 오늘의 학습 키워드 : 그리디🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/77484 def solution(lottos, win_nums): cnt,zero = 0,0 for lotto in lottos: if lotto in set(win_nums) : cnt += 1 elif lotto == 0 : zero += 1 return [6 if -cnt-zero == 0 else 7 - cnt-zero,6 if cnt == 0 else 7-cnt] 🗒️ 공부한 내용 본인의 언어로 정리하기🤔 문제를 보고 든 생각쉽다⏰ 예상 시간 복잡도 O(N)제한 사항lottos는 길이 6인 정수 배열..
99클럽 코테 스터디 38일차 TIL, 프로그래머스 / 혼자 놀기의 달인 🔑 오늘의 학습 키워드🔗 문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/131130 def solution(cards): opened = [False] * len(cards) box_group = [] def open_box(cards, idx): opened[idx] = True tmp = [idx] while True: next_open = cards[idx] - 1 if opened[next_open]: break opened[next_open] = True ..
99클럽 코테 스터디 37일차 TIL, 백준 / 2048 (Easy) / 12100 🔑 오늘의 학습 키워드 : 구현, dfs🔗 문제링크 https://www.acmicpc.net/problem/12100 import sysfrom copy import deepcopyinput = sys.stdin.readlineN = int(input())board = []for _ in range (N): board.append(list(map(int,input().split()))) def up(board): for j in range(N): pointer = 0 for i in range(1, N): if board[i][j]: tmp = board[i][j] boar..
99클럽 코테 스터디 36일차 TIL, 백준 / 도미노 / 1552 🔑 오늘의 학습 키워드 dfs🔗 문제링크 https://www.acmicpc.net/problem/1552 import itertools# 알파벳을 숫자로 변환하는 함수def alphabet_to_minus_num(c): if c.isdigit(): return int(c) else: return -1 * (ord(c) - ord('A') + 1)# 점수를 계산하는 함수def calculate_domino_cross(cycles, domino): score = 1 for cycle in cycles: cycle_score = 1 for (i, j) in cycle: cycle_score *= domino[i][..