Algorithm & Data Structure/BOJ

[백준] 1547. 공

2020. 6. 23. 23:29

https://www.acmicpc.net/problem/1547

 

1547번: 공

첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 �

www.acmicpc.net

간단한 시뮬레이션 문제였습니다.

공은 움직이지 않고, 컵만 들어서 옮기는 것이기 때문에

컵의 현재상태(공의 소유 유/무)를 SWAP 해주면 됩니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 2503. 숫자 야구  (0) 2020.07.01
[백준] 6679. 싱기한 네자리 숫자  (0) 2020.06.25
[백준] 1963. 소수경로  (0) 2020.06.22
[백준] 5567. 결혼식  (0) 2020.05.02
[백준] 11404. 플로이드  (0) 2020.05.01

[백준] 1963. 소수경로

2020. 6. 22. 13:33

www.acmicpc.net/problem/1963

 

1963번: 소수 경로

문제 소수를 유난히도 좋아하는 창영이는 게임 아이디 비밀번호를 4자리 ‘소수’로 정해놓았다. 어느 날 창영이는 친한 친구와 대화를 나누었는데: “이제 슬슬 비번 바꿀 때도 됐잖아” “응

www.acmicpc.net

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 6679. 싱기한 네자리 숫자  (0) 2020.06.25
[백준] 1547. 공  (0) 2020.06.23
[백준] 5567. 결혼식  (0) 2020.05.02
[백준] 11404. 플로이드  (0) 2020.05.01
[백준] 9501. 꿍의 우주여행  (0) 2020.04.23

[백준] 5567. 결혼식

2020. 5. 2. 17:02

https://www.acmicpc.net/problem/5567

 

5567번: 결혼식

문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m

www.acmicpc.net

그래프 문제였습니다.

BFS 알고리즘으로 해결했습니다.

 

친구와 친구의 친구까지만 초대하므로

카운트를 세어서 카운트가 2일때 까지만 초대하면 됩니다.

 

* 초대된 사람들을 visited배열에 true로 표시해두고

BFS가 끝나면 초대된 사람의 수를 확인해 줍니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 1547. 공  (0) 2020.06.23
[백준] 1963. 소수경로  (0) 2020.06.22
[백준] 11404. 플로이드  (0) 2020.05.01
[백준] 9501. 꿍의 우주여행  (0) 2020.04.23
[백준] 4179. 불!  (0) 2020.04.22

[백준] 11404. 플로이드

2020. 5. 1. 17:06

https://www.acmicpc.net/problem/11404

 

11404번: 플로이드

첫째 줄에 도시의 개수 n(1 ≤ n ≤ 100)이 주어지고 둘째 줄에는 버스의 개수 m(1 ≤ m ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 있다. 시작 도시와 도착 도시가 같은 경우는 없다. 비용은 100,000보다 작거나 같은 자연수이다. 시작

www.acmicpc.net

플로이드 와샬 알고리즘 문제였습니다.

 

'시작 도시와 도착 도시를 연결하는 노선은 하나가 아닐 수 있다.'

이와같이 두 정점사이에 노선이 여러개 이므로 우선, 입력단계에서 비용을 최소값으로 세팅을 해줘야 합니다.

 

이후 과정은 무한대 값만 10000000 으로 해주고

플로이드 와샬 알고리즘을 구현하면 됩니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 1963. 소수경로  (0) 2020.06.22
[백준] 5567. 결혼식  (0) 2020.05.02
[백준] 9501. 꿍의 우주여행  (0) 2020.04.23
[백준] 4179. 불!  (0) 2020.04.22
[백준] 5427. 불  (0) 2020.04.21

https://www.acmicpc.net/problem/9501

 

9501번: 꿍의 우주여행

문제 꿍은 우주여행을 하고 싶어져서 우주여행을 계획하기 시작했다. 몇 가지를 고려해본 결과 우주여행에는 우주선의 연료와 목적지까지의 도착시간이 가장 큰 영향을 미치는것으로 파악됐다. 꿍은 엄청난 부자여서 우주선이 여러대가 있는데 각각의 우주선마다 최고속도와 연료소비율이 조금씩 다르다. 연료 소비율은 단위시간당 소비하는 연료의 양이다. 모든 우주선이 최고속도에 즉시 도달한다고 할 때 꿍이 가고싶어하는 곳까지 여행할 수 있는 우주선은 총 몇대인지 여러분이 대

www.acmicpc.net

간단한 수학문제였습니다.

(연료양/연료 소비율) X 속도 가 거리보다 크면 여행할 수 있는 우주선입니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 5567. 결혼식  (0) 2020.05.02
[백준] 11404. 플로이드  (0) 2020.05.01
[백준] 4179. 불!  (0) 2020.04.22
[백준] 5427. 불  (0) 2020.04.21
[백준] 1837. 암호제작  (0) 2020.04.20

[백준] 4179. 불!

2020. 4. 22. 16:20

https://www.acmicpc.net/problem/4179

 

4179번: 불!

문제 지훈이는 미로에서 일을 한다. 지훈이를 미로에서 탈출하도록 도와주자! 미로에서의 지훈이의 위치와 불이 붙은 위치를 감안해서 지훈이가 불에 타기전에 탈출할 수 있는지의 여부, 그리고 얼마나 빨리 탈출할 수 있는지를 결정해야한다. 지훈이와 불은 매 분마다 한칸씩 수평또는 수직으로(비스듬하게 이동하지 않는다)  이동한다.  불은 각 지점에서 네 방향으로 확산된다.  지훈이는 미로의 가장자리에 접한 공간에서 탈출할 수 있다.  지훈이와 불은 벽이 있는 공간

www.acmicpc.net

이전에 풀었던 불 문제(5427번 불)와 비슷한 문제였습니다.

  1. 우선 불을 동서남북 번지게 함
  2. 지훈이를 이동시킴

이런 방식으로 이전 문제와 동일하게 해결했습니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 11404. 플로이드  (0) 2020.05.01
[백준] 9501. 꿍의 우주여행  (0) 2020.04.23
[백준] 5427. 불  (0) 2020.04.21
[백준] 1837. 암호제작  (0) 2020.04.20
[백준] 5014. 스타트링크 (BFS)  (0) 2020.04.03

[백준] 5427. 불

2020. 4. 21. 17:05

https://www.acmicpc.net/problem/5427

 

5427번: 불

문제 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에는 불이 붙지 않는다. 상근이는 동서남북 인접한 칸으로 이동할 수 있으며, 1초가 걸린다. 상근이는 벽을 통과할 수 없고, 불이 옮겨진 칸 또는 이제 불이 붙으려는 칸으로 이동할 수 없다. 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다. 빌딩

www.acmicpc.net

시뮬레이션 + BFS 문제 였습니다.

 

(상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다.)  << 동시에 라는 말에 고민하지말고 순차적으로 구현

(불이 옮겨진 칸 또는 이제 불이 붙으려는 칸으로 이동할 수 없다.)  << 이 지문때문에 불이 먼저 번지도록 구현

  1. 불 동서남북 번짐 -> 벽만 아니면 불이 번지도록
  2. 상근이 움직임 -> 빈칸인 곳 으로만 움직일 수 있음

상근이가 움직일 수 있는 곳을 담은 Queue가 텅 비었을땐 탈출 불가능한 것이고,

움직이는 도중 map밖으로 상근이가 이동하면 그때까지 걸린 총 시간을 출력하면 됩니다.

* 불과 상근이가 방문한 곳을 체크하는 boolean 배열을 2개 사용합니다.

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 9501. 꿍의 우주여행  (0) 2020.04.23
[백준] 4179. 불!  (0) 2020.04.22
[백준] 1837. 암호제작  (0) 2020.04.20
[백준] 5014. 스타트링크 (BFS)  (0) 2020.04.03
[백준] 1748. 수 이어 쓰기 1  (0) 2020.04.02

[백준] 1837. 암호제작

2020. 4. 20. 20:10

https://www.acmicpc.net/problem/1837

 

1837번: 암호제작

문제 원룡이는 한 컴퓨터 보안 회사에서 일을 하고 있다. 그러던 도중, 원룡이는 YESWOA.COM 으로부터 홈페이지 유저들의 비밀키를 만들라는 지시를 받았다. 원룡이는 비밀 키를 다음과 같은 방법으로 만들었다. 개인마다 어떤 특정한 소수 p와 q를 주어 두 소수의 곱 pq를 비밀 키로 두었다. 이렇게 해 주면 두 소수 p,q를 알지 못하는 이상, 비밀 키를 알 수 없다는 장점을 가지고 있다. 하지만 원룡이는 한 가지 사실을 잊고 말았다. 최근 컴퓨터 기

www.acmicpc.net

소수와 수학 관련 문제였습니다.

 

1부터 K까지 의 소수들로 암호를 나누어 보면 됩니다.

주어진는 암호가 10의 100승 까지 이므로 문자열로 받아야 합니다.

 

* 문자열로 받은 암호를 소수로 나눌때

암호를 각 자리수 별로 나누었다가 합칠때, 자리수 별로 소수로 나누어 보면 됩니다.

 

소수를 구하는 알고리즘은 에라토스테네스의 체 알고리즘을 사용해야 시간초과에 안걸립니다.

참고 사이트 : https://velog.io/@hyeon930/%EC%86%8C%EC%88%98%EB%A5%BC-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98 

 

소수를 구하는 알고리즘

소수 2를 제외한 자연수 중 나누어 떨어지는 수가 1과 자신뿐인 수 소수를 구하는 알고리즘 가장 기본적인 방법 정의를 그대로 구현한 것으로 2 부터 주어진 수 - 1 까지의 자연수로 계속 나누어 본다. O(n)의 시간복잡도를 가진다. 하지만, 숫자가 주어질 때 마다 판별해야한다. 메모이제이션 2 부터 n 사이의 소수로 나누었을 때 떨어지지 않으면 수수...

velog.io

 

'Algorithm & Data Structure > BOJ' 카테고리의 다른 글

[백준] 4179. 불!  (0) 2020.04.22
[백준] 5427. 불  (0) 2020.04.21
[백준] 5014. 스타트링크 (BFS)  (0) 2020.04.03
[백준] 1748. 수 이어 쓰기 1  (0) 2020.04.02
[백준] 1024. 수열의 합  (0) 2020.04.01

+ Recent posts