프로그래밍-학습기록 95

HTML 개요

HTML은 하이퍼 텍스트 마크업 언어(Hyper Text Markup Language)이다. HTML은 웹 페이지를 위한 지배적인 마크업 언어이다. HTML은 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공한다. 그리고 이미지와 객체를 내장하고 대화형 양식을 생성하는 데 사용될 수 있다. HTML은 웹 페이지 콘텐츠 안의 꺾쇠() 괄호 둘러싸인 "태그"로 되어 있는 HTML 요소(HTML element) 형태로 작성한다. 하이퍼텍스트는 사용자에게 내용의 비순차적 검색이 가능하도록 제공되는 텍스트이다. 참조(하이퍼링크)를 통해 독자가 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. 마크업 언..

프로그래머스 | 파이썬 | 삼각달팽이

코딩테스트 연습 - 삼각 달팽이 엄청 어려웠다. 결국 다른 사람 풀이를 참조했다. DFS/BFS 유형의 문제 같다. 풀이의 흐름 방향에 따른 좌표 값의 증감을 미리 정해둔다. 같은 방향으로 진행하면서 값을 넣어주고 범위를 벗어나려고 하면 방향을 바꾼다. 방향을 바꿀 때 방향을 그것을 3으로 나눈 나머지로 한다. 정해진 숫자만큼 칸을 다 채웠으면 리스트에 담는다. def solution(n): dx = [1, 0, -1] # 세로 dy = [0, 1, -1] # 가로 board = [[0] * (n) for _ in range(n)] count = 1 # 채울 숫자 x, y = 0, 0 direction = 0 end_count = (n * (n + 1)) / 2 while end_count >= coun..

프로그래머스 | 파이썬 | 문자열 압축

코딩테스트 연습 - 문자열 압축 나의 풀이 주어진 문자열 길이가 1이면 1을 반환한다. 문자열을 가장 길게 압축하는 길이는 문자열 절반 길이이다. 주어진 문자열을 1부터 문자열 절반 길이까지 압축한다. 주어진 문자열을 특정 간격으로 자른다. 자른 문자열을 비교하여 압축한다. 압축한 문자열의 길이를 담은 리스트(length_list)에 모든 압축한 문자열의 길이를 담는다. length_list의 최솟값을 구한다. def solution(string): length_list = [] string_length = len(string) if string_length == 1: return 1 for compress_length in range(1, string_length // 2 + 1): length_lis..

Annotation(애너테이션, 어노테이션)

책 을 참고해 작성했습니다. Annotation 자바를 개발한 사람들은 소스코드에 대한 문서를 따로 만들기보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 생각했다. 그래서 소스코드의 주석 /** ~ */ 에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML 문서를 생성해내는 프로그램(javadoc.exe)을 만들어서 사용했다. 주석 안에 소스코드에 대한 설명들이 있고, 그 안에 '@'이 붙은 태그들, 이 미리 정의된 태그들을 이용해서 주석 안에 정보를 저장하고, javadoc.exe 라는 프로그램이 이 정보를 읽어서 문서를 작성하는데 사용한다. 이 기능을 응용하여, 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 바로 애너..

프로그래머스 | python | 괄호 변환 | 용기의 문제

코딩테스트 연습 - 괄호 변환 힌트 없이 풀었다. 와! 문제에 있는 설명대로 구현했더니 풀 수 있었다. 의외로 구현 난이도는 쉬운 편이었다. 이 문제를 풀려면 일단 용기가 필요했다. level 2만큼의 용기가 필요하다. 처음에 봤을 때 막막해서 풀지 않았다. 결국 계속 다른 문제를 풀고 돌아돌아 도착한 문제다. def solution(given_string): if given_string == "": return "" undividable_balanced, balanced = divide_string_to_2_balanced(given_string) if is_right_bracket(undividable_balanced): return undividable_balanced + solution(balan..

프로그래머스 | python | 스킬트리

코딩테스트 연습 - 스킬트리 소요 시간 1시간 30분, 풀다 못하겠어서 다른 사람 풀이 참조함. 무작위로 이뤄진 문자열(A)에 포함된 특정 문자열(B)의 문자들이 그 특정 문자열(B)의 순서를 지키는지 검사하는 문제였다. A = "awegd", B = "ag" → A의 a,g가 B의 순서를 지키고 있다. A = "gwaed", B = "ag" → A의 a,g가 B의 순서를 지키고 있지 않다. 나의 풀이 from collections import deque def solution(skill_order, skill_trees): answer = len(skill_trees) skill_order = skill_order for skill_tree in skill_trees: skill_order_queue ..

프로그래머스 | python | level 2 | 올바른 괄호

어려울 줄 알았는데 쉽게 풀었다. 아이디어는 간단했다. "()"를 계속 삭제해가면 된다. 그래서 처음엔 replace() 함수를 사용했다. 하지만 효율성 테스트를 통과하지 못했다. 그래서 매번 문자열을 탐색에 중간 값을 삭제하는 replace가 아니라, 차례대로 탐색해가며 삭제하는 게 무엇이 있을까 생각했다. 오, 그렇다. 스택을 떠올렸다. 스택을 사용했더니 효율성 테스트를 통과했다. 가장 끝의 두 값이 완전한 괄호("()")가 되면 pop하여 없애는 방식으로 구현했다. 인덱스가 없어 오류가 생기는 경우를 처리하기 위해 try except 구문을 사용했다. 첫 풀이, 효율성 테스트를 통과하지 못 했다. def solution(s): # 올바른 괄호 for _ in range(len(s)): s = s.r..

프로그래머스 | python | level 2 | 다리를 지나는 트럭

푸는 데 걸린 시간 → 2시간에서 3시간 사이 collections 모듈의 deque를 사용해 풀었다. 풀이는 처음에 풀지 못하고 다른 사람의 풀이를 보고 힌트를 얻었다. 하지만 특정 테스트케이스에서 계속 시간초과가 나서 풀지 못하고 있었다. 시간 초과를 어떻게 없앨까 고민하면서, 쓸데 없는 연산에 대한 통찰이 늘었다. 아무 생각 없이 쓰고 있던 sum(bridge)가 문제였다. 테스트케이스 5에서 계속 막히던 코드 from collections import deque def solution(bridge_length, weight_bridge_can_hold, truck_weights): time = 0 bridge = deque([0] * bridge_length) truck_weights = dequ..

프로그래머스 | python | level 2 | 튜플 | 어거지로 풀고 공부하기

2시간 안 쪽으로 푼 것 같다. 내 최초 풀이 # 튜플 def solution(s): answer = [] given_list_without_braket = list(map(lambda x: x.split(","), s[2:-2].split("},{"))) number_count_dict = dict() for element in given_list_without_braket: for number in element: if number in number_count_dict: number_count_dict[number] = number_count_dict[number] + 1 else: number_count_dict[number] = 1 for item in sorted( list(number_coun..

우아한 테크코스 코딩테스트 + 프리코스 회고

일정 서류 지원 ~ Nov 4, 2020 1차 코딩 테스트 Nov 7, 2020 프리코스 Nov 25, 2020 → Dec 15, 2020 최종 코딩 테스트 Dec 19, 2020 서류 지원 질문들이 하나 같이 흥미로웠고 과거를 돌아보고 앞으로 어떻게 살지 생각하는 데 도움이 됐다. 1년 이상 꾸준히 한 것에 블로그와 일기를 적었다. 내년 3월이 되면 프로그래밍도 함께 말할 수 있겠다. 증빙을 위한 포트폴리오 노션 페이지를 처음 만들었다. 1차 코딩 테스트 7문제 중 5문제를 풀었다. 못 푼 두 문제는 그래프 문제 같아 보였다. 사실, 문제를 정확히 이해하지도 못했기 때문에 어떤 자료구조와 알고리즘을 써야하는지 알지 못했다. 프리코스 가장 많이 배우고 성장했던 시기이다. 3주에 걸쳐 숫자 야구, 자동차 ..