전체 글
개인 기록용 웹 사이트
-
3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 내 풀이 from collections import deque n = int(input()) arr = [[0] * n for _ in range(n)] k = int(input()) for _ in range(k): x, y = map(int, input().split()) arr[x - 1][y - 1] = 1 l = int(input()) action = deque() for _ in range(l): x, c = input().split() action.appe..
[구현] 뱀 풀이 (백준 3190 / 삼성전자 SW 역량테스트)3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 내 풀이 from collections import deque n = int(input()) arr = [[0] * n for _ in range(n)] k = int(input()) for _ in range(k): x, y = map(int, input().split()) arr[x - 1][y - 1] = 1 l = int(input()) action = deque() for _ in range(l): x, c = input().split() action.appe..
2022.07.08 -
문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 ..
[KAKAO RECRUITMENT] 문자열 압축 풀이 / Python문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 ..
2022.07.05 -
문자열 재정렬 [문제] 알파벳 대문자와 숫자 (0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다. 예를 들어 K1KA5CB7이 입력으로 들어오면, ABCKK13을 출력합니다. [입력] K1KA5CB7 [출력] ABCKK13 [입력] FDSARQWER13579 [출력] ADEFQRRSW25 내 풀이 arr = list(input()) arr.sort() idx, digit = 0, 0 if any(map(str.isdigit, arr)): for i in arr: if i.isdigit(): idx += 1 digit += int(i) arr = arr[idx:] arr.append(digit)..
[구현] 문자열 재정렬 풀이문자열 재정렬 [문제] 알파벳 대문자와 숫자 (0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다. 예를 들어 K1KA5CB7이 입력으로 들어오면, ABCKK13을 출력합니다. [입력] K1KA5CB7 [출력] ABCKK13 [입력] FDSARQWER13579 [출력] ADEFQRRSW25 내 풀이 arr = list(input()) arr.sort() idx, digit = 0, 0 if any(map(str.isdigit, arr)): for i in arr: if i.isdigit(): idx += 1 digit += int(i) arr = arr[idx:] arr.append(digit)..
2022.07.03 -
18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 개인 풀이 arr = list(map(int, input())) print("LUCKY") if sum(arr[:len(arr) // 2]) == sum(arr[len(arr) // 2:]) else print("READY") array를 반으로 인덱싱하여 각 배열의 원소를 합한 결과를 비교해 동일한 경우 "LUCKY"를, 그렇지 않은 경우 "READY"를 출력하면 정답 판정을 받을 수 있다.
[백준 18406] 럭키 스트레이트 풀이 / Python18406번: 럭키 스트레이트 첫째 줄에 점수 N이 정수로 주어진다. (10 ≤ N ≤ 99,999,999) 단, 점수 N의 자릿수는 항상 짝수 형태로만 주어진다. www.acmicpc.net 개인 풀이 arr = list(map(int, input())) print("LUCKY") if sum(arr[:len(arr) // 2]) == sum(arr[len(arr) // 2:]) else print("READY") array를 반으로 인덱싱하여 각 배열의 원소를 합한 결과를 비교해 동일한 경우 "LUCKY"를, 그렇지 않은 경우 "READY"를 출력하면 정답 판정을 받을 수 있다.
2022.07.03 -
selenium으로 크롤링을 하다보면 종종 마주치는 오류이다. 크롬의 버전 업데이트로 인해 크롬 드라이버 버전과 충돌하여 발생하는 문제이다. 셀레니움의 문제가 아닌 크롬의 문제이고 100이전 버전부터 늘 발생했던 문제인데 여간 귀찮은게 아니다. Selenium.common.exceptions.WebDriverException: Message: unknown error: unexpected command response (Session info: chrome=103.0.5060.53) Stacktrace: Backtrace: Ordinal0 [0x007E6463+2188387] Ordinal0 [0x0077E461+1762401] Ordinal0 [0x00693D78+802168] Ordinal0 [0x0..
[Python] 크롬 103버전에서 발생하는 드라이버 오류 임시 해결방안(selenium crawling) unknown error: cannot determine loading status from unknown error: unexpected command responseselenium으로 크롤링을 하다보면 종종 마주치는 오류이다. 크롬의 버전 업데이트로 인해 크롬 드라이버 버전과 충돌하여 발생하는 문제이다. 셀레니움의 문제가 아닌 크롬의 문제이고 100이전 버전부터 늘 발생했던 문제인데 여간 귀찮은게 아니다. Selenium.common.exceptions.WebDriverException: Message: unknown error: unexpected command response (Session info: chrome=103.0.5060.53) Stacktrace: Backtrace: Ordinal0 [0x007E6463+2188387] Ordinal0 [0x0077E461+1762401] Ordinal0 [0x00693D78+802168] Ordinal0 [0x0..
2022.07.01 -
졸업작품한다고 준비는 못했으나.. 경험삼아 한번 나가본 작은 지역대회. 총 3문제, 90분 시간제한으로 출제되었는데 코딩테스트 문제를 거의 풀어보질 않아서 많이 어려웠다. 첫번째는 문자열 관련, 두번째는 당시엔 몰랐는데 DFS유형이라하고, 세번째는 아예 접근을 못해서 기억도 안난다. 좋은 경험 했다고 치자.. 저작권 문제로 문제 내용 생략. 풀이1 n, k = map(int, input().split()) arr = list(map(int, input().split())) idx, cnt = 0, 0 for _ in range(n // 3): if sum(arr[idx:idx + 3]) >= k: cnt += 1 idx += 3 print(cnt) 풀이2 n, m = map(int, input().spl..
2022 ICT 코딩경진대회 문제 풀이 후기졸업작품한다고 준비는 못했으나.. 경험삼아 한번 나가본 작은 지역대회. 총 3문제, 90분 시간제한으로 출제되었는데 코딩테스트 문제를 거의 풀어보질 않아서 많이 어려웠다. 첫번째는 문자열 관련, 두번째는 당시엔 몰랐는데 DFS유형이라하고, 세번째는 아예 접근을 못해서 기억도 안난다. 좋은 경험 했다고 치자.. 저작권 문제로 문제 내용 생략. 풀이1 n, k = map(int, input().split()) arr = list(map(int, input().split())) idx, cnt = 0, 0 for _ in range(n // 3): if sum(arr[idx:idx + 3]) >= k: cnt += 1 idx += 3 print(cnt) 풀이2 n, m = map(int, input().spl..
2022.06.26 -
지뢰찾기 게임 구현 익숙한 지뢰찾기 게임 프로그램을 구현했다. 마인이 들어있는 데이터 테이블과 유저에게 보이는 스크린 테이블을 따로 만들어 작성했고 지뢰가 아닌 칸에 대해서는 주변 마인의 수를 탐지해 탐지한 마인 수를 띄우고 개수가 0인 칸을 누르게 되면 탐색을 통해 최대한 많은 빈칸들이 열리도록 작성했다. 개인풀이 다이어그램 알고리즘 const $tbody = document.querySelector(".table tbody"); const $result = document.querySelector(".result"); const mineCnt = 10; const row = 10; const col = 10; let opened = 0; // 데이터 테이블 생성 const dataTableLinear..
[JavaScript] 지뢰찾기 게임 구현지뢰찾기 게임 구현 익숙한 지뢰찾기 게임 프로그램을 구현했다. 마인이 들어있는 데이터 테이블과 유저에게 보이는 스크린 테이블을 따로 만들어 작성했고 지뢰가 아닌 칸에 대해서는 주변 마인의 수를 탐지해 탐지한 마인 수를 띄우고 개수가 0인 칸을 누르게 되면 탐색을 통해 최대한 많은 빈칸들이 열리도록 작성했다. 개인풀이 다이어그램 알고리즘 const $tbody = document.querySelector(".table tbody"); const $result = document.querySelector(".result"); const mineCnt = 10; const row = 10; const col = 10; let opened = 0; // 데이터 테이블 생성 const dataTableLinear..
2022.02.12 -
카드 맞추기 구현 문제 처음 12장의 카드를 잠깐 기억했다가 뒤집은 후 색상이 같은 2장의 카드를 짝지어 모든 카드를 맞추는 프로그램이다. 클릭했을 때 클릭한 카드의 패밀리 노드 중 특정한 클래스를 가진 노드들을 가져와 해당 노드의 색상을 비교해 맞추어가는 방식으로 동작한다. 구현에 어려움은 없었는데 parent와 child 노드를 왔다갔다 하는 부분들이 많다. 이 부분에 더 좋은 구현 방법이 있을 것 같은데. 개인풀이 다이어그램 알고리즘 const $cards = document.querySelectorAll(".card"); const $cardsFront = document.querySelectorAll(".card__face--front"); const colorPack = [ "orange", ..
[JavaScript] 카드 맞추기 프로그램 구현카드 맞추기 구현 문제 처음 12장의 카드를 잠깐 기억했다가 뒤집은 후 색상이 같은 2장의 카드를 짝지어 모든 카드를 맞추는 프로그램이다. 클릭했을 때 클릭한 카드의 패밀리 노드 중 특정한 클래스를 가진 노드들을 가져와 해당 노드의 색상을 비교해 맞추어가는 방식으로 동작한다. 구현에 어려움은 없었는데 parent와 child 노드를 왔다갔다 하는 부분들이 많다. 이 부분에 더 좋은 구현 방법이 있을 것 같은데. 개인풀이 다이어그램 알고리즘 const $cards = document.querySelectorAll(".card"); const $cardsFront = document.querySelectorAll(".card__face--front"); const colorPack = [ "orange", ..
2022.02.10 -
미니 전투 게임 제작 간단한 텍스트 게임이다. 다이어그램대로 작성했는데 자질구레한 기능들을 구현해 넣다보니 코드가 좀 지저분해진 것 같다. (플래그 변수 넣고 빼는 부분은 나중에 스스로 헷갈려서 버그 수정에 힘이 좀 들었다.) 오류 나올만한 부분은 모두 제거했고 문제는 게임이 재미가 .. 어차피 구현 훈련을 위한 목적이니까. 좀 더 게임스럽게 만들려면 그래픽도 추가하고 아이템이나 다양한 몬스터들도 추가를 하면 될 것 같다. 객체 지향으로 재설계하는게 이런 게임 만들기 프로그램에선 더 깔끔할 것 같긴 하다. 개인 풀이 다이어그램 알고리즘 const $startGame = document.querySelector(".startGame"); const $myInfo = document.querySelector..
[JavaScript] 미니 전투 게임 제작미니 전투 게임 제작 간단한 텍스트 게임이다. 다이어그램대로 작성했는데 자질구레한 기능들을 구현해 넣다보니 코드가 좀 지저분해진 것 같다. (플래그 변수 넣고 빼는 부분은 나중에 스스로 헷갈려서 버그 수정에 힘이 좀 들었다.) 오류 나올만한 부분은 모두 제거했고 문제는 게임이 재미가 .. 어차피 구현 훈련을 위한 목적이니까. 좀 더 게임스럽게 만들려면 그래픽도 추가하고 아이템이나 다양한 몬스터들도 추가를 하면 될 것 같다. 객체 지향으로 재설계하는게 이런 게임 만들기 프로그램에선 더 깔끔할 것 같긴 하다. 개인 풀이 다이어그램 알고리즘 const $startGame = document.querySelector(".startGame"); const $myInfo = document.querySelector..
2022.02.08 -
틱택토 프로그램 컴퓨터와 대결하여 가장 먼저 3칸을 연달아 차지하는 플레이어가 승리하는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $log = document.querySelector(".log"); // 빈 테이블 생성 const spaceArray = []; for (let _ = 0; _ < 3; _++) { spaceArray.push(Array(3)); } const $items = document.querySelectorAll(".item"); let itemIndex = 0; // DOM 데이터 매칭 for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { spaceArray[i][j] = $items[itemIndex]..
[JavaScript] 틱택토 프로그램 풀이틱택토 프로그램 컴퓨터와 대결하여 가장 먼저 3칸을 연달아 차지하는 플레이어가 승리하는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $log = document.querySelector(".log"); // 빈 테이블 생성 const spaceArray = []; for (let _ = 0; _ < 3; _++) { spaceArray.push(Array(3)); } const $items = document.querySelectorAll(".item"); let itemIndex = 0; // DOM 데이터 매칭 for (let i = 0; i < 3; i++) { for (let j = 0; j < 3; j++) { spaceArray[i][j] = $items[itemIndex]..
2022.02.07 -
클릭속도 테스트 녹색 화면이 나왔을 때 클릭 속도를 측정하는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $screen = document.querySelector(".screen"); const $timeDiff = document.querySelector(".timeDiff"); const $log = document.querySelector(".log"); const recordArray = []; let timeout; let startTime, endTime, timeDiff; let flag = true; const handleScreenClick = (e) => { if (flag === false) return; if ($screen.style.backgroundColo..
[JavaScript] 클릭속도 테스트 풀이클릭속도 테스트 녹색 화면이 나왔을 때 클릭 속도를 측정하는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $screen = document.querySelector(".screen"); const $timeDiff = document.querySelector(".timeDiff"); const $log = document.querySelector(".log"); const recordArray = []; let timeout; let startTime, endTime, timeDiff; let flag = true; const handleScreenClick = (e) => { if (flag === false) return; if ($screen.style.backgroundColo..
2022.02.07 -
가위바위보 대결 프로그램 풀이 컴퓨터는 가위, 바위, 보를 연달아 순환하며 내 선택에 따라 결과를 판단해 승/패/무승부를 매기는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $computer = document.querySelector("#computer"); const $score = document.querySelector("#score"); const $rock = document.querySelector("#rock"); const $scissors = document.querySelector("#scissors"); const $paper = document.querySelector("#paper"); const IMG_URL = "./rsp.png"; $computer.st..
[JavaScript] 가위바위보 대결 프로그램 풀이가위바위보 대결 프로그램 풀이 컴퓨터는 가위, 바위, 보를 연달아 순환하며 내 선택에 따라 결과를 판단해 승/패/무승부를 매기는 프로그램을 작성하시오. 개인 풀이 다이어그램 알고리즘 const $computer = document.querySelector("#computer"); const $score = document.querySelector("#score"); const $rock = document.querySelector("#rock"); const $scissors = document.querySelector("#scissors"); const $paper = document.querySelector("#paper"); const IMG_URL = "./rsp.png"; $computer.st..
2022.02.05