전체 글

전체 글

    [Python] 백준 14888번 : 연산자 끼워넣기

    문제 14888번: 연산자 끼워넣기 [ 문제 조건 ] 입력 N : 수의 개수 A1 ~ An : 수들 sum(N-1) : 합이 N-1인 4개의 정수, 연산자 4개의 각각 개수가 주어짐 (+,-,×,÷) 순으로 출력 만들 수 있는 식의 최대 & 최소 값 출력 -10억 ≤ 결과값 ≤ 10억 [ 해결순서 ] 백트래킹 유형은 dfs를 주로 사용하는 것 같아 dfs로 풀어보려고 했다. 모든 경우의 수를 전부 구해 최대 최소를 비교하는 문제여서 어쨌든 모두 비교해서 구해야한다. 처음 먼저 plus가 1이니까 dfs가 걸려 깊이우선탐색 후 나머지 연산까지 깊이우선탐색 해 값을 갱신 깊이우선탐색 plus 연산은 끝났고, 나머지 연산 중 multiply 값이 1이므로 해당 연산 기준으로 재귀적으로 dfs 진행 후 최대, ..

    [Python] 백준 1074번 : Z

    문제 1074번: Z [ 문제 조건 ] Z 모양 순서대로 방문 입력한 r행 c열이 몇번 째로 방문하는지 출력 [ 해결순서 ] 1번째 풀이 -> 실패 재귀적으로 모든 분면의 모든 값을 확인해서 2X2 배열일 때 ( 더이상 등분하지 않아도 되면 ) 조건에 맞을 때까지 값을 하나씩 늘려가면서 몇번째 방문인지 계산하다가 r행 c열의 조건이면 여태껏 더한 방문값을 출력하고 종료한다. 이렇게 하면 시간 초과가 날 뿐만 아니라, 입력한 값에 포함하는 분면이 아닌 값들도 모두 확인해 비효율적인다. 2번째 풀이 (참고) 이 풀이는 아이디어를 참고한 후 코드를 짜면서 해석했는데, 이 문제를 풀 때 내가 처음에 생각해낸 아이디어와 비슷했다. (코드를 못 짜겠어서 1번째 풀이로 풀었지만..) 입력한 값이 몇 사분면인지 계산한..

    [Swift] 구조체(struct) 공부하기!

    처음 swift를 접했을 때 struct가 뭐지? 자바를 먼저 썼던 나는 class랑 뭐가 다르지 하며 궁금해했는데 공부를 해보니 사용법은 거의 유사하나 성능 및 쓰임새가 다른데, 간략히 설명하면 ( Pingu님 블로그 정리자료 참고 ) 공통점 1. 둘 다 값을 저장할 수 있는 프로퍼티를 선언할 수 있으며 2. 생성자를 사용할 수 있고, 차이점 - Class는 참조 타입이라 같은 클래스의 인스턴스 변수를 선언하고 값을 할당한 후 하나의 값을 변경하면 같은 참조를 한 변수도 변경된다. - Struct는 값 타입이며 새로운 변수를 할당할 때 마다 새로운 구조체가 할당된다. ( 각각 값이 존재해서 영향을 미치지 X ) 구조체는 그럼 어떻게 사용할까? 설명은 주석을 참고해주세요 ! struct Town { //..

    [Python] 백준 11051 : 이항 계수 2

    문제 11051번: 이항 계수 2 [ 문제 조건 ] nCk 를 구하면 된다. [ 해결순서 ] 먼저 분류가 DP라서 DP로 해결하려 했다. 팩토리얼 값들을 저장하기 위해 dp배열을 선언해서 반복해서 곱한 값들을 배열에 저장하였고 계산 된 값을 그냥 공식에 맞게 출력했다. nCn이나 nC0인 경우는 값이 그냥 1이기 때문에 조건문을 추가하였다. ( 넣지않아서 에러가 발생했다 ) 파이썬에 내장되어 있는 factorial 모듈도 있길래 그것도 사용해서 풀어봤다. 3줄만에 풀 수 있었다 ! ✏️한줄평 : 재귀적으로 팩토리얼을 구하지 않고 dp로 풀어볼 수 있는 문제였다. 코드

    [SwiftUI] NavigationLink를 이용해서 페이지 이동하기

    처음에 버튼 이미지를 넣어놓고 이제 어떻게 페이지 이동하지? 고민하면서 구글링 한 결과, 버튼이 아닌 NavigationLink를 이용해야 한다. 페이지 이동이 한번만 될 뿐 아니라, 두세번 원하는 만큼 설정하면 계속 연결되어 구현 가능하다. 바로 코드로 설명 !! 아이콘을 누르면 바로 해당 목적지의 뷰로 넘어가지만, 나는 NavigationLink안에 NavigationLink를 또 넣어 스택이 쌓이는 것처럼 화면에 들어가고 또 들어가게 구현해 보았다. var body: some View { NavigationView(content: { VStack(spacing: 40) { NavigationLink( destination: PickRamen()) { Icons(actionText: ..

    [Python] 백준 1309번 : 동물원

    1309번: 동물원 [ 문제 조건 ] 2 * N 배열의 동물원 우리 사자를 배치할 때 가로 세로로 붙어있으면 안됨 사자가 한마리도 없는 경우도 1가지 경우로 침 [ 해결순서 ] 처음엔 기존의 dp 같은 방식으로 풀려고 시도해 배열의 각 칸에 숫자를 부여해서 조건에 맞는 조합으로 값을 계산해서 구하려고했다. 뭔가 규칙이 보이는 것 같다가도 막상 식을 못세우겠어서 조금 헤매다 결국 구글의 도움을 좀 받았다. ( 삽질을 하고있단 느낌이 .. ) 첫번째 줄에 경우를 3가지로 나눠서 계산을 해야한다. *4번 줄 참고 경우의 수를 나눈 후 제일 작은 예시인 2 X 2 배열일 때를 직접 적어가며 규칙을 찾아보려했다. 사진을 참고하면 이해가 빠르겠지만, 한마리도 두지 않는 경우는 ( 두지 않는 경우, 왼쪽, 오른쪽 )..

    [Python] 백준 1932 : 정수 삼각형

    문제 https://www.acmicpc.net/problem/1932 [ 문제 조건 ] 한 줄씩 내려가면서 합이 최대가 되는 경로 구하기 더해질 수 있는 값은 대각선 왼쪽 or 오른쪽 [ 해결순서 ] 누적 값이 더해질 배열을 0으로 초기화 해서 입력받은 배열의 길이와 같게 선언 및 초기화 ( 그냥 입력받은 배열에다가 계산해도 무관하다 ) 예제를 분석하다 보니 가로 줄의 첫번째 값과 끝 값은 비교 대상이 없으므로 그냥 전 줄의 같은 인덱스 값을 더하면 되고, 처음, 끝을 제외한 인덱스 값들은 이제 대각선 왼쪽 or 오른쪽을 비교해서 더 큰 값을 현재 값에 더해준다. 그렇게 값을 누적시키면 맨 마지막 줄에 이제 여태까지 누적된 경우의 수가 배열에 저장 그 중 최대 값을 구해 출력한다. [ 예제 풀이 ] ✏..

    [Python] 백준 1946 : 신입사원

    문제 https://www.acmicpc.net/problem/1946 [ 문제 조건 ] 각 지원자마다 서류, 면점 순위를 입력 (* 주의 성적이 아니므로 순위가 낮은게 좋은거임) 서류, 면접 성적 중 적어도 다른 지원자보다 둘 중 하나 높아야 함 → 즉, 다른 지원자보다 둘 다 낮으면 탈락 [ 해결순서 ] 문제를 해결하는 포인트 중 하나가 입력 받은 후 먼저 1차적으로 서류순으로 등수를 정렬 하는 것이다. ( 면접 순으로 해도 상관 X ) 이미 서류 순으로 정렬 했다면, 이제는 면접 등수만 갖고 비교하면 되므로 훨씬 수월하다. 먼저 기준 값으로 서류 1등의 면접 등수를 두고 값을 계산하는데, 이미 뒤에 지원자들은 서류 등수는 다 낮은데 면접 등수까지 낮으면 둘 다 낮은 것이므로 탈락 기준 값보다 면접 ..

    [Python] 백준 9663 : N-Queen

    문제 https://www.acmicpc.net/problem/9663 [ 문제 조건 ] 1 ≤ N < 15 출력 : 서로 공격할 수 없게 놓는 경우의 수 백트래킹 문제 → 개념을 알고 있어야 함 [ 해결순서 ] 체스판에 퀸을 놓기위한 조건은 퀸의 가로, 세로, 대각선에 위치한 곳에 두면 안된다. 백 트래킹 문제에선 퀸을 놓을 때 직전의 열에 두지 않는다고 한다. ( 중복제거를 위해 ) 하나의 행에 하나의 퀸만 놓을 수 있다. 그렇다면 N * N개의 경우의 수가 존재 할 텐데 이 중에서 서로 공격하지 않게 놓는 경우의 수를 구해야한다. nqeen()은 퀸을 오른쪽 행으로 하나씩 옮기면서 경우의 수를 확인하고 check()로 행은 비교할 필요가 없고 (3번참고) 같은 열인지, 대각선상에 있는지 비교한다. ..

    [Python] 백준 2468번 - 안전 영역

    문제 https://www.acmicpc.net/problem/2468 [ 문제 조건 ] 문제에서 예시를 들어 설명할 때 모든 경우를 다 조사해 보면 이라고 설명되어 있다. 즉, 모든 경우의 수를 조사해야 됨 (이라고 나는 이해했다.) 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 출력 [ 해결순서 ] 배열을 입력할 때 N 이상인 값들만 방문여부를 True 값으로 바꾸고 깊이우선탐색을 진행한다. 깊이우선탐색을 진행하고 끝날때 안전영역 값(count)을 늘린다. 또 깊이우선탐색을 반복해야하는데 현재 count 값이 1차에서 3번째 줄처럼 할려고 했으나, ..