15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이전 문제들과 비슷하지만 다른 점이 있다면 숫자를 중복해서 고를 수 있으나, 비내림차순이어야 한다는 점 # 15652번: N과 M(4) n, m = map(int, input().split()) result = [] def backTracking(num): if len(result) == m: print(*result) return for i in range(num, n+1): result.append(i) backTracking(i) result.pop() b..
파이썬
15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 이전 문제들과 거의 같은 문제지만 다른 점이 있다면 이번에는 같은 수를 중복해서 고를 수 있다는 점 # 15651번: N과M(3) n, m = map(int, input().split()) result = [] def backTracking(num): if num == m: print(*result) return for i in range(1, n+1): result.append(i) backTracking(num+1) result.pop() backTracki..
15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 15649번 N과M(1) 문제와 거의 똑같지만 다른 점은, 고른 수열이 오름차순이어야 한다는 점! # 15650번: N과M(2) n, m = map(int, input().split()) visited = [False] * (n+1) result = [0] temp = 0 def backTracking(num): if num == m: print(*result[1:]) return for i in range(1, n+1): if not visited[i] and..
arr = [1, 2, 3, 4] print(*arr) 결과: 1 2 3 4 미쳤다😆 참고 파이썬 asterisk(*) 사용 용도 이 글은 파이썬에서 * 표현이 어떤 용도로 사용하는지에 대해 다룹니다. 1. 곱셈과 거듭제곱 - 굳이 코드를 붙이지 않아도 다들 아실거라고 생각합니다. 1 * 2 = 2 2 ** 2 = 4 2. 리스트 확장 * 를 사용 hwiyong.tistory.com
1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 처음에 점과 점 사이의 거리를 구하는 공식을 단순하게 가로 길이 + 세로 길이로 생각해서, 아니 이중 for문을 10000 X 10000으로 어떻게 돌리지? 라고 생각해서 결국 구글링을 통해 풀었다. 알고보니 math라이브러리를 사용해서 직접 점과 점사이의 거리를 구하는 것이었다. 그리고 직접 점과 점사이의 거리를 구하다보니, 접점의 좌표를 직접 구하기는 힘들 수 있다. -> 딱 안떨이지니까 우리가 알고 싶은 건 접점의 개수이기 때문에 두 원 사이의 접점의 개수 공식을 이용해서 풀면 되는 문제다. 고등학교, 아니 ..
set에서의 원소 검색 시간은 O(1)이라고 한다. -> 해쉬 테이블을 사용 set은 순서가 없는 컬렉션이다. 만약 중복된 것이 없는 원소들만 모여 있는 컬렉션에서 특정 원소를 찾아야 한다면 set 자료형을 통해 O(1) 시간으로 특정 원소의 유무를 파악할 수 있다. ex_set= {1, 2, 3, 4, 5} if 3 in ex_set: print("true") else: print("false")
2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 아이디어 생각까지 다 했는데 구현을 못했다.. 원래 재귀를 돌면서 별을 출력할 때, 리스트에 넣는게 아니라 그냥 문자열로 출력하게 만들었다. 이렇게 될 경우 print문 * 3 이런식으로 코드가 만들어져서 그냥 컴파일 오류가 발생한다. (print(a) * 3 이런 느낌) 별을 문자열이 아닌 리스트에 넣어서 마지막에 정답 출력할 때, join함수를 통해 별들을 출력해줄 수 있다. def print_star(n): if n == 3: r..
파이썬에서는 global을 통해 변수를 전역변수로 설정해줄 수 있다. 전역 변수를 설정하는 방법에는 2가지가 있다. 1. 함수 안에서 변수를 global을 통해 전역 변수로 선언 2. 함수 밖에서 변수를 global을 통해 전역 변수로 선언 1. 함수 안에서 변수를 global을 통해 전역 변수로 선언 a = 1 def test(): global a a = 3 b = 2 return a + b print(test()) print(a) 함수 안에서 global을 통해 a를 전역 변수로 선언해줬다. 이렇게 하면 함수 안의 a는 전역 변수로 설정되어서 전역 변수 a = 3으로 바꿔준다. 즉, test()함수의 출력결과는 3 + 2 = 5, a의 출력 결과는 3이다. 만약 함수 내의 global a를 없애주면,..
arr = [1, 2, 3, 4, 5] arr1 = ['a', 'b', 'c', 'd', 'e'] print("".join(map(str, arr))) print("".join(arr1)) result = "" for i in arr: result += str(i) print(result) result1 = "" for i in arr1: result1 += i print(result1) 1. 파이썬의 join 함수를 이용해서 리스트 -> 문자열로 만들기 2. for문을 통해 리스트 원소를 하나씩 탐색하며 문자열에 더해줘서 문자열로 만들기 주의해야할 점은 리스트가 str 자료형이 아닐 경우에, 스트링으로 바꿔서 문자열에 추가해줘야 한다는 점! [python] 파이썬 join 함수 정리 및 예제 (문자열 ..
[파이썬 기초] Counter를 이용한 항목 계산 파이썬에서 항목의 개수를 셀때 사용하는 클래스로 Counter라는게 있다. 리스트나 셋을 인자로 넘기면 각 항목을 키로 해서 개수를 알려준다. 기본사용법은 이렇다. >>> from collections import Counter >>> dongdongfather.tistory.com 파이썬에서 항목의 개수를 셀 때, Counter라는 클래스를 사용할 수 있다. from collections import Counter arr = [1, 1, 2, 2, 2, 3 ,3, 4, 5, 5, 5, 5, 5] c = Counter(arr) print(c) 결과: Counter({5: 5, 2: 3, 1: 2, 3: 2, 4: 1}) print(c.most_common..