알고리즘 문제 풀이/SWEA 8

[backjoon]20055 컨테이너 벨트 위의 로봇 java

https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import java.io.*;import java.util.*; public class Main { static ..

[SWEA]4408. 자기 방으로 돌아가기 (java)

완전 그리디 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import java.util.*; import java.io.*; class Solution { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T; StringTokenizer st; st = new StringTokenizer(br.readLine()); T = Intege..

[SWEA]1970. 쉬운 거스름돈 java

그리디문제! 화폐 단위는 정해져있기에 먼저 내림차순으로 배열을 만든다. 큰 값부터 나눠줄 수 있으면 나눈 후 몫을 저장하고, 화폐 단위를 바꿔준다. 현재 값이 0이 될 때까지 반복한다. 구현 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 import java.util.*; import java.io.*; class Solution { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T; Stri..

[SWEA]5122. 수열 편집 java

LinkedList를 이용해서 주어진 요청사항에 맞게 풀이. 구현 코드 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.util.*;import java.io.*; class Solution { public static void main(String args[]) throws Exception { int T; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); T = Integer.parseInt(br.readLine()); StringTokenizer st; for (int test_cas..

[SWEA] 1230. [S/W 문제해결 기본] 8일차 - 암호문3 java

풀이 문제의 요구사항대로 풀이하면 된다. 문자열의 중간에 삽입/삭제가 빈번하게 일어나서 LinkedList를 이용해서 풀이했다. 링크드리스트를 실제로 구현했으면 더 빨랐을 수도 있다. switch-case를 이용하였는데, if문과의 차이는 별로 없다고 알고있다. for문을 써도 되지만 while문이 더 편해서 일회성인 y값들은 while을 이용해서 풀이하였다. 구현 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 import..

[SWEA]3316. 동아리실 관리하기 D4 (java)

문제 풀이 비트마스크를 이용한 완전탐색 아닌 완전탐색, 빡구현 문제! DFS를 이용한 풀이도 가능할 것 같다. 메모이제이션을 이용하여 부분 집합들에 대한 값을 관리해주었다. 상당히 for문이 많이 쓰였지만 10,000 * 16 * 16 이라 괜찮은... 듯 싶다. 첫 번째 for문은 전체 동아리실 관리 날짜 수 이다. 두 번째 for문은 동아리실 관리에 어제 참여한 사람들의 부분 집합을 구하기 위한 부분이다. 세 번째 for문은 동아리실 관리에 당일 참여한 사람들의 부분 집합을 구하기 위한 부분인데, 어제를 먼저 확인하는 이유는 어제 참여하지 않은 사용자를 걸러내기 위함이다. 오늘 참여하는 사람(sub)이고, 당번(turn)이라면 값에 누적해서 연산해준다. 코드 1 2 3 4 5 6 7 8 9 10 11..

[SWEA]10726. 이진수 표현(java)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXRSXf_a9qsDFAXS SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이 문제는 뒤에서 N개까지의 수가 1로 되어 있는지 확인하는 문제이다. 조건이 1 ≤ N ≤ 30 , 0 ≤ M ≤ 108 이기에 M을 3이라고 한다면 000....011 로 표현된다고 이해하면 된다. N도 3이라고 한다면 M=3의 뒤에서 N개는 011이고 1이 아닌 자리가 있기 때문에 OFF라고 할 수 있다. 나이브하게 자릿수 단위로 나눠서 홀수인지 짝수인지 풀이해도 되지만, 비트마스킹으로 풀어봤..

[SWEA]1288. 새로운 불면증 치료법(java)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18_yw6I9MCFAZN SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제에서 요구하는 것은 어떤 수의 자릿수 각각의 값들을 검증하는 것이라고 할 수 있다. 단순하게 풀면, 검증하기 위해 set에 넣어도 될 것 같은데, 비트마스킹을 이용해서 풀이해봤다. 먼저 어떤 수(N)은 검증을 완료할 때마다 같은 수가 더해지는 2N, 3N,,, 이 된다. 이 수를 10으로 나눠서 그 나머지를 확인해준다. 비트마스킹을 이용해서 확인하는 방법에는 1. &연산을 이용해서 숫자 지워주기..

반응형