알고리즘49 [알고리즘 문제] 카드 게임 조작 (Python / 파이썬) 문제 유니는 카드 게임을 하고 있다. 이 카드 게임은 N + 1종류의 카드를 사용한다. 각 카드는 0~N의 번호가 적혀 있다. i가 적힌 카드는 i장 이상의 카드를 사용한 다음에 사용 가능하다. 즉, 0이 적힌 카드는 언제든 사용 가능하고 10이 적힌 카드는 다른 카드를 10장 사용해야 사용 가능하다. 유니는 N번 카드를 갖고 있고, 그 외에도 여러 장의 카드를 갖고 있다. 유니는 N번 카드를 사용하고 싶지만 N장의 다른 카드를 사용해야 N번 카드를 사용할 수 있기 때문에 N번 카드를 사용할 수 없을 수도 있다. 만약 유니가 N번 카드를 사용할 수 없다면 미리 몰래 숨겨둔 카드들을 가져와서 사용하려고 한다. 유니는 철저하기 때문에 0~N번 카드를 모두 N장씩 숨겨뒀다. 따라서 가져올 카드가 부족해서 N번.. 2022. 5. 12. [알고리즘 문제] 가장 큰 곱 (Python / 파이썬) 문제 유니는 오늘 계단수라는 표현을 배웠다. 계단수란 123, 34, 6789처럼 10진수로 표현한 수의 각 자릿수가 1씩 증가하는 형태의 수를 말한다. 54, 35, 9012 등은 계단수가 아니다. 계단수를 직접 만들어보고 싶었던 유니는 우선 길이가 N인 수열을 만들었다. 이 수열에서 서로 다른 위치에 있는 두 수의 곱이 계단수가 되는 경우를 찾고, 그 중 가장 큰 계단수가 어떤 값인지 계산해 보려고 한다. 그런데 유니가 계산하기에 수열의 길이가 너무 길다. 유니 대신 위 내용을 계산해주는 프로그램을 작성해보자. 만약 두 수의 곱이 계단수가 되는 경우가 없다면 -1을 출력한다. 입력 첫째 줄에 테스트케이스의 수 T가 주어진다.. 각 테스트케이스의 첫 줄에 N이 주어진다. 각 테스트케이스의 두번째 줄에 .. 2022. 5. 12. [알고리즘 문제] 동전 뒤집기 (Python / 파이썬) 문제 유니는 친구들과 동전 뒤집기 놀이를 하고 있다. 동전 뒤집기 놀이는 다음과 같은 방식으로 진행된다. 1. N*N의 정사각형 모양으로 동전을 배치한다. 이때, 각 동전의 윗면이 앞면일지 뒷면일지는 무작위로 결정한다. 2. 가장 왼쪽 위에 있는 동전과 원하는 위치의 동전을 두 꼭짓점으로 하는 직사각형에 포함된 동전을 모두 뒤집는다. 3. 모든 동전이 앞면이 될 때까지 2번 작업을 반복한다. 초기 동전 상태가 주어질 때, 2번 작업을 최소 몇 번 해야 하는지 구하여라. 입력 첫째 줄에 N이 주어진다. 둘째 줄부터 N개의 줄에 동전의 초기 상태가 주어진다. 0은 앞면을, 1은 뒷면을 의미한다. ( 1≤N≤10) 출력 모든 동전을 앞면으로 만들기 위해 뒤집는 최소 횟수를 출력한다. 문제 풀이 NxN 정사각.. 2022. 5. 12. [알고리즘 문제] inequal (Python / 파이썬) 문제 두 종류의 부등호 기호 ‘’가 k 개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다. 3 1 7 0 이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족하는 정수는 하나 이상 존재한다. 예를 들.. 2022. 5. 12. 이전 1 ··· 6 7 8 9 10 11 12 13 다음