Computer Science 136

[Python 3] BOJ 15686 치킨 배달

오늘의 문제는 치킨 배달이라는 문제이다. (골드 5) DFS를 통해서 해결방법을 구현하였다. 해결 코드이다. import sys input=sys.stdin.readline def dist(a,b): return abs(a[0]-b[0])+abs(a[1]-b[1]) n,m=map(int,input().split()) data=[] for i in range(n): data.append(list(map(int,input().split()))) chicken=[] house=[] for i in range(n): for j in range(n): if data[i][j]==1: house.append([i,j]) elif data[i][j]==2: chicken.append([i,j]) dists=[] fo..

BOJ 16987: 계란으로 계란치기 [Python 3]

이 문제는 dfs와 유사한 방법 (백트래킹)으로 풀 수 있다. https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱 www.acmicpc.net 풀이 n=int(input()) data=[] for i in range(n): data.append(list(map(int,input().split()))) res=0 def solve(idx,data): global res if idx==n: cnt=0 for i in range(n): if data[i][0]

BOJ 14889: 스타트와 링크 (Python3)

오늘의 문제는 DFS와 브루트포스를 함께 사용하는 문제이다. https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 이 문제에서 포인트는 '같은 팀의 팀원에 따라서 개인의 능력치가 달라진다'이다. 그렇기 때문에 각 팀의 팀원을 설정하고, 이 때의 두 팀의 능력치의 합의 차이를 구하는 방식으로 해결해보았다. 문제에 주어진 예시를 보면, 이와 같은 식으로 해결할 수 있다. def dfs(start,depth): global minDiff if depth==peopleEachT..

Python: Lambda 함수와 zip 함수

람다 함수란 간결하게 함수를 만들 수 있는 방법 중 하나입니다. 원래 함수는 def functionName(parameter): return result 같은 형태로 이루어지며, 이 함수를 call 하면서 함수가 활용된다. 그러나, 이 함수가 계속 쓰일 함수가 아니라면, lambda 함수를 이용해서 memory를 절약할 수 있다. lambda parameter: result 와 같은 식으로, 정의가 됨에 동시에 활용이 가능하다. 예시로, (lambda x: x**2)(2) 와 같이 사용하면 4가 출력된다. 보통 sort,sorted 함수나 map 함수와 같이 잘 활용되고는 한다. (활용법 추후 설명) zip 함수 zip함수는 여러 리스트, 튜플 등 그룹들의 데이터를 한번에 그룹화시켜준다. 예로, name..

Computer Science 2022.11.16

[Git & Github] Git이 뭔가요? 커밋은 어떻게 하는건가요?

개발자의 놀이터, 개발자의 기본 중의 기본이라고 여겨지는 'Git'과 'GitHub'에 대해서 다뤄보려고 한다. 사실 모든 예비 개발자들은 선배 개발자들로부터 '깃허브 만들어라, 관리해라, 이게 포트폴리오로 쓰인다'라는 말을 귀가 아플 정도로 들었을 것이다. 그러나 나를 포함해서, 많은 사람들이 이를 사용하는 데에 불편을 겪고, 굉장히 어렵다고 생각하기 일쑤다. 하지만 이 귀찮음과 어려움을 이겨내면, 과거 나처럼 '카카오톡 나에게 쓰기'로 코드 버전관리를 하면서, 과거 내가 작성했던 코드를 보기 위해 계속계속 톡방을 뒤지는 일은 없지 않을까? 필자도 현재 배워가는 과정으로서, 최대한 쉽게 설명해보도록 하겠다! 깃과 깃허브가 무엇인가? Git은 파일을 누가, 언제, 어떻게 수정을 했는지 기록해주고, 서버 ..

[C언어] 함수 포인터에 대해

보통 C언어를 사용하면서 포인터는 변수를 가리킬 때 사용하고는 한다. 그러나 포인터는 함수의 시작 주소도 나타낼 수 있다. 이를 우리는 '함수 포인터'라고 한다. 함수 포인터란? 함수 포인터에는, 3가지 부분으로 나뉜다. type (*function_name) (arguments); 함수의 자료형 함수의 이름을 대신하여 호출할 수 있는 함수 포인터 매개변수 로 이루어진다. #include int sum(int, int); int main() { int (*fp)(int, int); fp = sum; printf("%d\n", fp(10, 20)); //1 printf("%d\n", sum(10,20)); //2 printf("%d\n", (*sum)(10,20)); //3 return 0; } int s..

BOJ 10972: 다음 순열

이번 문제는 저번에 풀었던 순열 관련 문제와 유사하다. 처음에 생각했던 방법은, 저번에 풀었던 것과 유사하게 dfs를 이용하여 푸는 것이였다. n=int(input()) nums=list(map(int,input().split())) answer=[] result=[] visited=[False]*(n+1) def solve(d,n): if d==n: answer.append(result[:]) return for i in nums: if not visited[i]: visited[i]=True result.append(i) solve(d+1,n) visited[i]=False result.pop() solve(0,n) answer.sort() a=answer.index(nums) if nums==ans..

BOJ 15663: N과 M (9)

저번에 포스팅한 N과 M (1)에 유사한 문제입니다. 풀이: 이 문제에서 제일 중요한 포인트는 DFS를 이용한 풀이법보다도, 밑에서 리스트 내에 리스트가 있는 경우에 어떻게 대응해야하는지입니다. 밑에 answer라는 list에는 중복이 존재하는 list가 있습니다. 이럴 때, 바로 set에 넣기에는 list라는 자료형을 넣을 수 없습니다. 그렇기에, tuple로 한번 옮겨주고, set에 넣으면 되겠습니다.

BOJ 15469: N과 M (1)

오랜만에 포스팅해봅니다! 휴가 및 격리 때문에 그동안 공부를 하지 못했네요 ㅠ 아직 백트래킹에 대한 내용을 아는 게 없었기에 각종 블로그 및 풀이들을 보고 결정했다. 물론 combination을 외부 라이브러리에서 사용할 수 있었지만, 이는 별로 교육적으로 도움이 되지 않을 것 같아서 이 방법은 사용하지 않았다. 내 풀이: 여기서 사용되는 d는 depth의 줄임말로, 몇 개의 수를 출력해야 하는 지를 담고 있다. solved라는 함수를 만들어서, 전 depth로 넘어가기 전에 result에 쓰이지 않는 수를 넣는 식으로 함수를 완성했다.

html+css 2일차: 웹의 기본 내용

저번 시간에는 html에 쓰이는 기본적인 태그들에 대해서 공부했었다. 오늘은 html의 기초적인 내용과, 웹에 대한 기본적인 배경 내용에 대해 다루어 보겠다. 첫째로, 내가 연습한 코드를 공개하겠다. 2생활관 baby들 최환짱 최환 박준서 이원재 박지승 네이버 롤체하고싶다 이 코드를 보고 오늘 공부한 내용들에 대해서 정리해보겠다. 첫째로, title 사이에 페이지의 전체적인 내용을 나타내는 제목을 적었다. 그리고 h1 사이에 소제목을 적고, 밑에 '최환짱'을 클릭하면 다른 페이지로 이끌어주는 링크를 만들었다. ordered list를 만들었다. 밑에 있는 list의 디자인을 문을 이용해서 만들었다. 글자의 크기랑, 정렬과, 링크에 있는 밑줄을 없애기 위해 text-decoration을 none으로 설정했..