TIL 240229

hyeo71·2024년 3월 3일
0

2024 내배캠 AI 트랙

목록 보기
42/108

Baekjoon

16938 - 캠프 준비

16938 - 캠프 준비

캠프에 사용할 문제를 고르는 방법의 수를 주어진 조건에 맞게 출력하기

N: 가지고 있는 문제의 수
L, R: 최저합, 최고합
X: 난이도 차이

캠프에 사용할 문제는 두 문제 이상이어야 하기 때문에 입력 받은 문제 중 2개 부터 입력 받은 문제의 갯수까지의 조합을 구해야 한다고 생각했다. itertools의 combination을 사용하고 반복문을 2~N의 조건을 주고 문제들 중 2개, 3개, .... , N개의 원소를 가지는 조합을 문제의 조건에 맞다면 count를 하나씩 올려 해당 문제에 맞는 결과를 도출하는 코드를 구현했다.

16943 - 숫자 재배치

16943 - 숫자 재배치

숫자 A에 포함된 숫자를 섞은 숫자 C 중 숫자 B를 넘지 않는 가장 큰 수 구하기

A에 포함된 숫자의 순서를 섞어서 만든 새로운 수 C는 A의 순열 중 하나라는 말이 된다.
이는 itertools.permutations를 사용할 수 있다는 것을 의미한다.
하지만 A에 0이 들어가는 경우 순열 중 첫번째 숫자가 0일 경우가 있기 때문에 순열 중 첫번째 숫자가 0인 것을 제외해야 한다.
또한 결과가 없을 경우 -1을 출력해야 하는데 결과를 저장하는 result 변수를 선언하고 이 후 결과 없을 때 -1을 저장하는 것 보다는 처음에 -1로 선언하고 조건에 맞지 않으면 자연스레 -1로 결과를 출력할 수 있는 것을 알게 되었다.

또한, permutations 함수를 사용하기 위해 입력받은 숫자를 자리 별로 나누어 list로 사용해서 이 후 B보다 작은 숫자인지 판별하는 조건식에서 숫자 A, A를 순열한 숫자, B를 int()''.join을 사용하여 나눠진 숫자를 합쳐서 정상적인 계산이 되도록 만들었다.


오늘은 오후에 과제 해설과 저녁시간 이 후에 특강이 있어서 개인적인 공부를 많이 하진 못했다. 하지만 과제 해설은 내가 만든 코드와 다른 사람이 만드는 코드를 보며 비교할 수 있었고 저녁시간 이 후 특강은 개발자라는 직업에 대한 정보를 많이 얻을 수 있어 좋은 시간이라고 생각한다.

0개의 댓글