코딩테스트411 [SWEA] 6808 규영이와 인영이의 카드게임 - JAVA 1. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1~18까지의 카드를 하나씩 내며 게임을 한다. 한 라운드에는 한 장씩 카드를 낸 다음 두 사람이 낸 카드에 적힌 수를 비교해서 점수를 계산한다. 이긴 사람이 두 카드의 합만큼 점수를 얻고, 진 사람은 아무 점수도 얻을 수 없다. 아홉라운드를 끝내고 총점을 따졌을 때, 총점이 더 높은 사람이 이기는 게임이다. 규영이가 낼 카드의 순서와 종류는 이미 정해져있을 때, 규영이가 이기는 경우와 지는 경우가 총 몇가지인지 구한다. 2. 풀이 메인함수 inputCards = 규영이 카드 isSelected = 1~18까지의 카드. 카드번호로 바로 접근하기 위해 1.. 코딩테스트/SWEA 2022. 2. 14. [BOJ] 2304 창고 다각형 - JAVA 1. 문제 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 창고의 지붕을 다음과 같이 만든다. 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 없어야 한다. 2. 풀이 먼저 x축.. 코딩테스트/BOJ 2022. 2. 14. [BOJ] 1244 스위치 켜고 끄기 - JAVA 1. 문제 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 스위치가 꺼져있으면 0, 켜져있으면 1이다. 남자는 1, 여자는 2다. 학생들은 1이상 스위치 개수 이하의 자연수를 받는다. 남학생은 본인 번호의 배수 스위치를 바꾼다. 여학생은 본인 번호 기준으로 양 옆이 대칭이 아니게 될 때까지 넓혀가면서 바꾼다. 2. 풀이 스위치 배열은 좀 더 편하게 코딩하기 위해 boolean으로 설정했다. 남학생=> 본인번호-1을 시작으로 배수마다 상태를.. 코딩테스트/BOJ 2022. 2. 13. [BOJ] 2628 종이자르기 - JAVA 1. 문제 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 종이를 칼로 자른다. 가로, 세로 방향으로 끝에서 끝까지만 자를 수 있다. 2. 풀이 자르는 점선을 모두 입력받고 정렬시켰다. 현재 점선-직전 점선으로 gap을 구해서 하나하나 max값과 비교했다. 맨 끝과의 차이도 알아야 해서 점선 배열에 가로의 끝 값, 세로의 끝 값도 넣어줘야 했다. 하지만 이럴 필요 없이 그냥 가로의 가장 큰 gap, 세로의 가장 큰 gap을 각각 찾아서 서로 곱해주면 된다.. 코딩테스트/BOJ 2022. 2. 13. [BOJ] 2635 수 이어가기 - JAVA 1. 문제 https://www.acmicpc.net/problem/2635 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 첫번째 수로 양의 정수가 주어진다. 두번째 수는 임의로 정한다. 세번째 수부터 모든 수는 2번째 전 수-1번째 전 수를 뺀 값이다. 음의 정수가 만들어지면 이 음의 정수를 버리고 더 이상 수를 만들지 않는다. * 문제에서 얘기하는 양의 정수는 0을 포함한다. 2. 풀이 첫번째 수는 항상 N, 두번째 수는 0부터 N까지 가능하다. first, second 수를 변경해가면서 카운트를 센다. 만약 first-second= 0; num--) { first = N; second = num; int cnt .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 10157 자리배정 - JAVA 1. 문제 https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net C*R 공연장에 가장 왼쪽부터 시계방향으로 사람을 채운다. 좌표는 가장 왼쪽 아래가 (1,1)이다. K번째 관객의 x, y좌표를 출력한다. 만약 좌석을 배정할 수 없는 경우는 0을 출력한다. 2. 풀이 배정할 수 없는 경우(K>C*R)부터 제외한다. 시작인덱스는 (0,R-1)이다. 위->오른쪽->아래->왼쪽으로 움직인다. 다음 x,y를 구하고 범위에 벗어나거나 이미 저장.. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 2477 참외밭 - JAVA 1. 문제 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net ┓┏, ┗, ┛ 모양 육각형 밭의 넓이를 출력한다. 각 변의 길이는 시계 방향으로 변의 방향과 함께 주어진다. 변의 방향에서 동쪽은 1, 서쪽은 2, 남쪽은 3, 북쪽은 4로 나타낸다. 2. 풀이 어떤 방향에서 시작하든지 두 번 등장하는 변이 밭에서 들어간 부분이다. ABAB 식으로 반복됐을 때, 들어간 부분의 넓이는 안쪽 B*A를 곱하면 구할 수 있다. 전체 밭의 넓이는 A와 B가 .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 2491 수열 - JAVA 1. 문제 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 가장 긴 증가하는 부분수열, 가장 긴 감소하는 부분수열 중 더 긴 수열의 길이를 출력한다. 2. 풀이 "카운트"만 세면 되기 때문에 하나씩 입력받아가면서 조건에 해당되면 +1, 아니라면 1을 저장한다. 증가하는 수열, 감소하는 수열 모두 cnt를 체크하면 그 두 값과 현재 저장된 max값을 비교해서 더 큰 값을 다시 담는다. 마지막으로 꼭! 이전 숫자를 현재 숫자로 교체한다. import .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 17406 배열돌리기 4 - JAVA 1. 문제 https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 2. 풀이 static 변수들 static int[][] deltas = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};//오른쪽, 아래, 왼쪽, 위 static int N, M, K;// 배열 크기, 회전 개수 static int[][] A;//배열 static int MIN = Integer.MAX_VALUE;//배열의 최소값 저장 st.. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 16935 배열돌리기 3 - JAVA 1. 문제 https://www.acmicpc.net/problem/16935 16935번: 배열 돌리기 3 크기가 N×M인 배열이 있을 때, 배열에 연산을 R번 적용하려고 한다. 연산은 총 6가지가 있다. 1번 연산은 배열을 상하 반전시키는 연산이다. 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → www.acmicpc.net 배열의 크기는 N*M이다. 주어진 R개의 연산을 순서대로 적용시킨 후 결과를 출력해야한다. 1번 연산 : 상하반전 2번 연산 : 좌우반전 3번 연산 : 오른쪽 90도 회전 4번 연산 : 왼쪽 90도 회전 5번 연산 : 4개의 부분배열로 나눠 그룹의 순서를 시계방향으로 이동 6번 연산 : 4개의 부분배열로 나눠 .. 코딩테스트/BOJ 2022. 2. 12. [BOJ] 16926 배열돌리기1 - JAVA 1. 문제 https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 크기 N*M배열을 반시계 방향으로 R번 회전시킨 결과를 출력한다. 2. 풀이 N*M 배열을 R번 회전시킨다. 한 번 회전시킬 때마다 가장 바깥쪽에서부터 안쪽까지 한 줄 한 줄 돌린다. 따라서 한 번의 회전 당 turnArr(회전메서드)를 부르는 횟수는 더 작은 변의 절반만큼이다. 어떤 사각형이.. 코딩테스트/BOJ 2022. 2. 12. [SWEA] 1233 사칙연산 유효성 검사 - JAVA 1. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 풀이 이 문제는 두 가지 방식을 이용해서 풀었다. 입력받을 때, 자식이 있는 노드라면 무조건 연산자여야한다. 따라서 그걸 체크 하는 방법 모두 입력받은 뒤, 자식이 있는 노드인데 해당 노드가 연산자가 아니거나 자식노드 중 하나라도 유효한 노드가 아닐 때를 체크하는 방법 둘 다 같은 말인데 2번이 좀 더 복잡하고 길게 푼 방식이다. dfs배운 김에 활용해보고 싶어서 짜봤다. 입력받을 때 체크(try-catch) 현재 입력받은 노드가 노드번호, (숫자|연산자), 자식정보까지 모두 존재한다면, (숫자|연산자) 자리를 Integer로 바꿔본다. 오류가 난.. 코딩테스트/SWEA 2022. 2. 11. 이전 1 ··· 29 30 31 32 33 34 35 다음