BOJ 1799 비숍
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1799 문제 해설체스판 위에 비숍을 겹치지 않게 놓는 문제입니다.마음같아선 브루트 포스로 전부 찾아보고 싶지만 시간초과가 나기 때문에 효율적인 방법을 찾아야합니다.먼저, 비숍을 놓을 수 있는 칸을 흑과 백으로 나눕니다.(비숍은 대각선으로만 움직이기 때문에 서로 다른 색의 칸에는 영향을 못 줍니다.)비숍을 놓을 수 있는 위치를 흑백으로 나눴다면 백트래킹을 통해 가능한 비숍의 최대 개수를 각각 구합니다.(대각선은 i + j와 i - j + (N - 1)음수방지 로 2차원 배열이 아닌 1차원 배열로 구현 가능합니다.) 코드더보기import Foundationif let n = Int(readLine()!) { var board = ..
BOJ 1865 웜홀 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1865 문제 해설해당 문제는 양방향 간선(도로)와 단방향 간선(웜홀)을 입력받아 음수 사이클이 발생하는 지에 대해 알아보는 문제입니다.양방향 간선(도로)와 단방향 간선(웜홀)을 입력받아 edges에 추가합니다.벨만-포드 알고리즘을 사용하기 위해 거리 배열을 초기화 시킵니다.(이때 거리는 무한입니다.)시작점에서 모든 간선을 N-1번 반복하여 최단거리를 갱신합니다.갱신이 완료되고, 한번 더 실행시켰을 때 갱신이 발생하면 음수 사이클이 존재하는 것입니다. 코드더보기import Foundationif let tc = Int(readLine()!) { for _ in 0.. distance[x] + dist { ..
BOJ 1918 후위 표기식 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/1918 문제 해설중위 표기식을 후위 표기식으로 변경하는 문제입니다.중위 표기식을 후위 표기식으로 변경하는 절차를 조건문으로 작성하는 것이 정답입니다.피연산자는 바로 출력합니다.(코드에서는 String var에 추가하였습니다.)연산자는 스택에 push합니다.("+", "-", "*", "/" 등)여는 괄호는 무조건 push합니다. "("닫는 괄호가 나오면 여는 괄호를 만날 때까지 스택에서 pop합니다.(주의: "(" 여는 괄호도 제거해야 합니다.)수식이 끝나면 스택에 남은 연산자를 pop합니다. 코드더보기import Foundationlet input = readLine()!.map{ String($0) }var result = ..
[맥북 M1] Cannot install under Rosetta 2 in ARM...
·
잡담
문제 기존 인텔 맥과 실리콘 맥의 경로 차이 때문에 발생하는 문제이다.여러가지 해결방법이 있지만 이왕 터미널이 켜져있는 김에 명령어로 해결해보자.(터미널을 Rosetta로 켜기 옵션을 끄면 됨) 해결방법arch -arm64 설치 명령어예시arch -arm64 brew install yarn
BOJ 2110 공유기 설치 swift
·
알고리즘
문제 링크 : https://www.acmicpc.net/problem/2110 문제도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.입력첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을..