전체 글 364

특정 문자열을 포함한 시각구하기

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 모든 시각의 경우를 하나씩 세야한다. 하루는 86,400초이므로 모든 경우의 수는 86,400가지이다. 1씩 시각을 증가시키면서 3이 하나라도 포함되어 있었는지를 확인한다. 4. 표준 답안 H = int(input()) count = 0 for hour in range(H+1): for minute in range(60): for seconds in range(60): if '3' in str(hour) + str(minute) + str(seconds): count += 1 print(count) 시, 분, 초를 문자열로 만들어서 붙이게 되면 연산이 안되고 하나의 문자열이 된다. 거기서 3이 포함되어있는지 확인하는 방식으로 접근했다.

상하좌우 여행가

1. 문제 설명 2. 문제 조건 3. 문제 해결 아이디어 요구사항대로 충실히 구현 시물레이션 유형으로 구현이 중요한 문제 4. 풀이 N = int(input()) position = list(map(str,input().split())) #현재 서 있는 위치 x, y = 1, 1 #동, 북, 서, 남 dx = [0, -1, 0 ,1] dy = [1, 0, -1, 0] for i in position: if((i == 'L') & (y-1 > 0)):#왼쪽으로 이동 x += dx[2] y += dy[2] if((i == 'R') & (y+1 0)):#위로 이동 x += dx[1] y += dy[1] if((i == 'D') & (x+1 n or ny > n: continue x, y = nx, ny pri..

구현 이론

구현(Implementation)이란 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정. 구현 유형의 예시는? 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 실수 연산을 다루고, 특정 소수점자리까지 출력해야 하는 문제 (Iterator) 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제 적절한 라이브러리를 찾아서 사용해야 하는 문제 1. 일반적으로 알고리즘 문제에서의 2차원 공간은 행렬(Matrix)의 의미로 사용된다. 행렬이란 2차원 배열에 표현하는 것 (파이썬은 리스트) 2. 시물레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용된다. 특정위치에서 시작해서 좌/우/상/하로 움직여 문제를 해결하는 것이 많다. dx[0], dy[0]은 x좌표는 그대로 y좌표만 1증가시키므..

모험가 길드

1. 문제설명 2. 문제 조건 3. 문제해결 아이디어 오름차순 정렬 이후에 공포도가 가장 낮은 모험가부터 하나씩 확인한다. 공포도를 하나씩 확인하며 "현재 그룹에 포함된 모험가의 수"가 "현재 확인하고 있는 공포도보다 크거나 같다면 이를 그룹으로 설정" 4. 답안 #모험가의 수 n = int(input()) promulgate = list(map(int, input().split())) answer = 0 people = 1 #올림차순 정렬 promulgate = sorted(promulgate) for i in range(n): if(promulgate[i] = i: #현재 그룹에 포함된 모험가의 수가 현재의 공포도 이상일 때 result += 1 count = 0 print(result)

1. Index Pattern

엘라스틱 키바나에 접속하여 아래 하단에 Upload a file을 눌러 csv 파일을 적재한다. excel파일이면 csv파일로 변형해서 넣는다. 단, csv 파일 변형시 UTF-8 (쉼표로 구분)을 선택해야 양식에 맞게 적용시킬수 있다. 여기서 Number of lines을 한 컬럼이라고 부르는데 노출되는 데이터양은 1000개 뿐이다. 추가로 설정해서 더 많은 데이터를 받을 필요가 있다. Type은 date형, Integer형 등등 자동으로 인식됐고 Documents도 잘 나와있다. 여기서 Document는 한 컬럼을 의미한다. 노출되는 데이터 양이 1000이므로 늘려주자 [Override settings] 선택한 후 Number of lines to sampled을 10000으로 바꿔준다. [Has h..

2. FTP 파일질라 서버 (NAS) 구축

서버란? 서버란 네트워크로 연결된 물리적인 데스크톱 내에세 서비스가 동작하여 외부의 다른 네트워크에서 신호를 보내면 요청한 쪽의 클라이언트쪽에 신호를 반대로 보내주는 것을 의미한다. 즉, 일반 데스크톱이 네트워크에 연결되어있고 다른 클라이언트쪽에서 해당 피씨를 외부에서 찾을 수 있는 주소만 있다면 서버가 될 수 있다. 서버를 구축하기 위해서는? FTP서버를 데스크톱으로 구동하고 외부에서 해당 PC를 찾을 수만 있으면 서버가 되므로, 외부에서 찾도록 해야한다. 외부에서 찾기 위해서는 네트워크 연결을 통해 IP주소를 입력하고 입력한 IP에서 해당 서버를 찾을 수만 있으면 된다. 통상적으로는 고정 IP를 통해 서버로 활용한다. 공유기를 통해 DDNS서비스를 받아 유동 IP를 반 고정형태의 고정 IP로 사용한다..

FTP/File Zilla 2022.07.05

1. FTP 파일질라 서버 (NAS) 구축

NAS란? Network Attached Storage의 약자로 네트워크로 결합된 저장장치를 뜻한다. 컴퓨터의 데이터가 랜선을 통해 다른 네트워크에서 해당 서버를 접속하여 데이터를 읽고, 쓰고, 수정하는 것을 뜻한다. NAS 장점 💡 일반적으로는 특정 데이터를 지니고 다닐 때는 외장하드를 휴대한다. 하지만 물리적으로 들고 다녀야 한다는 단점이 있다. 이때 NAS를 이용하면 인터넷이 되는 환경 어디에서든지 자료를 읽고, 쓰고, 수정할 수 있다. NAS 구축 준비물 NAS로 활용할 데스크톱 DDNS, 포트포워딩 기능이 있는 공유기 (iptime) DDNS 란? 웹 브라우저에서 네이버나 구글에 접속하기 위해 www.naver.com 등의 주소로 접속한다. 그 누구도 IP주소로 검색해서 접속하지는 않는다. 이처..

FTP/File Zilla 2022.07.05

곱하기 혹은 더하기

1. 문제 설명 2. 문제 해결 아이디어 대부분의 경우 '+'보다는 'x'가 값을 크게 만든다. 다만 두 수중에서 하나라도 0, 1일경우 곱하기 보다는 더하기를 수행하는 것이 효율적이다. 즉, 하나라도 1 이하인 경우에는 더하며 두 수가 모두 2이상인 경우에는 곱해야한다. 3. 답안 각각 분리해서 계산해야 하므로 문자열로 받는 것이 좋겠다. 앞뒤를 비교해서 앞뒤합이 4이하일 경우 더한다. 맨 앞 인덱스의 수를 잡고 계속 연산해나간다. data = input() result = int(data[0]) for i in range(len(data) - 1): if(int(data[i]) + int(data[i+1])