오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

분류 전체보기 245

[BOJ] 2553 사회망 서비스 python

문제 페이스북, 트위터, 카카오톡과 같은 사회망 서비스(SNS)가 널리 사용됨에 따라, 사회망을 통하여 사람들이 어떻게 새로운 아이디어를 받아들이게 되는가를 이해하는 문제가 중요해졌다. 사회망에서 사람들의 친구 관계는 그래프로 표현할 수 있는데, 이 그래프에서 사람은 정점으로 표현되고, 두 정점을 잇는 에지는 두 정점으로 표현되는 두 사람이 서로 친구 관계임을 표현한다. 예를 들어, 철수와 영희, 철수와 만수, 영희와 순희가 서로 친구 관계라면 이를 표현하는 친구 관계 그래프는 다음과 같다. 친구 관계 그래프를 이용하면 사회망 서비스에서 어떤 새로운 아이디어가 전파되는 과정을 이해하는데 도움을 줄 수 있다. 어떤 새로운 아이디어를 먼저 받아들인 사람을 얼리 아답터(early adaptor)라고 하는데, ..

[BOJ] 16968 차량번호판1 python

https://www.acmicpc.net/problem/16968 16968번: 차량 번호판 1 00부터 99까지 총 100가지 중에서 00, 11, 22, 33, 44, 55, 66, 77, 88, 99가 불가능하다. www.acmicpc.net 문제 상도시의 차량 번호판 형식이 주어졌을 때, 가능한 차량 번호판의 개수를 구해보자. 번호판에 사용할 수 있는 숫자는 0, 1, 2, ..., 8, 9이다. 사용할 수 있는 문자는 a, b, c, d, ..., y, z이다. 차량 번호판의 형식은 최대 4글자이고, c와 d로 이루어진 문자열로 나타낼 수 있다. c는 문자가 위치하는 자리, d는 숫자가 위치하는 자리이다. 같은 문자 또는 숫자가 연속해서 2번 나타나면 안 된다. 예를 들어, 형식이 "cd"이면..

소년만화 주제가

90년대에 태어나 2000년도 초반에 어린시절을 보냈던 사람들이라면 다들 재밌게 본 애니메이션 하나씩은 있을 것이다.  디지몬이나 포켓몬, 카드 캡터 체리등등 유명하지 않은 것들로는 셀 수 없을 정도로 많은 애니메이션이 어린 시절을 스쳐갔다. 대부분 어둠의 세력에 맞서는 아이들이 주인공인 만화로, 그 과정에서 좌절하지만 결국에는 이겨내는 과정을 그리는 경우가 많았다.   그런 시절은 모두 지나고 일상을 살면서 종종 생각나는 애니메이션 주제가들이 있다. 오프닝이나 엔딩 뿐만 아니라 위기를 극복하는 상황에서 극복할 때 항상 나오는 곡 (ex 악당 레퀴엠)  그런 곡들이 뜬금없이 생각 날 때가 있다. 예전에는 제목도 기억나지 않아 다시 듣고 싶어도 듣지 못하는 그런 노래들을, 요즘은 알고리즘을 통해 유튜브에서..

2021.05.01

[Python] Thread-safe 한 자료구조

멀티스레드 환경에서 스레드간 통신을 위해 자료구조를 사용한다고 한다. 하지만 동시에 여러 스레드에서 하나의 변수에 접근시 임계영역 문제가 발생하게 된다. 그렇기 때문에 자료구조 역시 Thread-safe 하게 만들 필요가 있다. 아래는 Thread-safe 구현한 set 클래스 이다.(파이썬 동시성 프로그래밍, 에이콘 출판사 에서 발췌) from threading import Lock class LockedSet(set): def __init__(self, *args, **kwargs): self._lock= Lock() super(LockedSet, self).__init__(*args, **kwargs) def add(self, elem): with self._lock: #with keyword는 자..

Language/Python 2021.04.29

[프로그래머스] 카드짝 맞추기 파이썬

카드 짝 맞추기 programmers.co.kr/learn/courses/30/lessons/72415 코딩테스트 연습 - 카드 짝 맞추기 [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16 programmers.co.kr 1. 문제 설명 게임 개발자인 베로니는 개발 연습을 위해 다음과 같은 간단한 카드 짝맞추기 보드 게임을 개발해 보려고 합니다. 게임이 시작되면 화면에는 카드 16장이 뒷면을 위로하여 4 x 4 크기의 격자 형태로 표시되어 있습니다. 각 카드의 앞면에는 카카오프렌즈 캐릭터 그림이 그려져 있으며, 8가지의 캐릭터 그림이 그려진 카드가 각기 2장씩 화면에 무작위로 배치..

[프로그래머스] 자물쇠와 열쇠 python

1. 문제 설명 고고학자인 "튜브"는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이동이 가능하며 열쇠의 돌기 부분을 자물쇠의 홈 부분에 딱 맞게 채우면 자물쇠가 열리게 되는 구조입니다. 자물쇠 영역을 벗어난 부분에 있는 열쇠의 홈과 돌기는 자물쇠를 ..

[BOJ] 14500 테트로미노 Python

www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 1. 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 ..

[프로그래머스] 후보키 python

programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 1. 문제 설명 프렌즈대학교 컴퓨터공학과 조교인 제이지는 네오 학과장님의 지시로, 학생들의 인적사항을 정리하는 업무를 담당하게 되었다. 그의 학부 시절 프로그래밍 경험을 되살려, 모든 인적사항을 데이터베이스에 넣기로 하였고, 이를 위해 정리를 하던 중에 ..

[프로그래머스] N으로 표현 python

programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 1. 문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 2.제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는..

[javascript, DOM] 익스플로러에서 접근시 Edge로 리다이렉트

마이크로소프트(Microsoft) 에서 익스플로러(IE, Internet Explorer)를 업데이트 지원하지 않은지 거의 8개월이 되간다. 하지만 여전히 우리나라에서는 여전히 많은 사람들이 익스플로러를 사용하고 있다. 하지만 매번 익스플로러를 고려해 웹페이지를 작성할 수는 없다. 지원하지 않는 문법이 너무 많기 때문이다. 이번 포스트에서는 현재 접속한 브라우저를 확인하고 만약 익스플로러 라면 사용자를 다른 웹브라우저를 사용하도록 유도하는 방법에 대해 알아보도록 하겠다. 코드는 아래와 같다 //페이지가 로드 되었을 때 해당 함수를 실행시킨다. window.onload = function(){ if (window.navigator.userAgent.match(/MSIE|Internet Explorer|Tr..