검색결과 리스트
전체 글에 해당되는 글 1768건
- 2023.01.28 프로그래머스 C# 나머지 한 점 좌표 출력(직사각형, XOR)
- 2023.01.27 C# 가장 큰 수(foreach, CompareTo, var, string.Join)
- 2023.01.27 C# 디스크 컨트롤러(다른 사람의 풀이)
- 2023.01.27 C# 단어 변환(DFS, 깊이 우선 탐색)
- 2023.01.27 프로그래머스 레벨1 C# 체육복(list Remove)
- 2023.01.27 프로그래머스 C# K번째 수(list.Clear(), list.Count)
- 2023.01.27 프로그래머스 C# 큰 수 만들기(Stringbuilder)
- 2023.01.26 C# 소수 만들기(3중 for문)
글
프로그래머스 C# 나머지 한 점 좌표 출력(직사각형, XOR)
using System;
class Solution
{
public int[] solution(int[,] v)
{
int[] answer={0,0};
answer[0] = v[0,0] ^ v[1,0] ^ v[2,0];
answer[1] = v[0,1] ^ v[1,1] ^ v[2,1];
return answer;
}
}
///////
int[] answer = new int[2];
for(int i=0; i<answer.Length;i++)
{
if(v[0][i] == v[1][i])
{
answer = v[2][i];
}
else if(v[0][i] == v[2][i])
{
answer = v[1][i];
}
else if(v[1][i] == v[2][i])
{
answer = v[0][i];
}
}
return answer;
A XOR B = 0
A XOR A XOR B = B
같은 값 두개와 다른 값 하나를 XOR하면 다른 값 한개가 나옴
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# OX퀴즈(JAVA) (0) | 2023.01.28 |
---|---|
프로그래머스 C# 빈칸 채우기(예시) (0) | 2023.01.28 |
C# 가장 큰 수(foreach, CompareTo, var, string.Join) (0) | 2023.01.27 |
C# 디스크 컨트롤러(다른 사람의 풀이) (0) | 2023.01.27 |
C# 단어 변환(DFS, 깊이 우선 탐색) (0) | 2023.01.27 |
글
C# 가장 큰 수(foreach, CompareTo, var, string.Join)
using System;
using System.Collections.Generic;
public class Solution {
public string solution(int[] numbers) {
List<string> lstnumber=new List<string>();
List<string> builder = new List<string>();
for(int i=0; i<numbers.Length; i++)
{
lstnumber.Add(numbers[i].ToString());
}
lstnumber.Sort((a,b)=>(b+a).CompareTo(a+b));
foreach(var str in lstnumber)
{
builder.Add(str);
}
string answer = string.Join("",builder);
if(answer[0]=='0') return "0";
return answer;
}
}
////
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public string solution(int[] numbers)
{
Array.Sort(numbers, (x, y) =>
{
string XY = x.ToString() + y.ToString();
string YX = y.ToString() + x.ToString();
return YX.CompareTo(XY);
});
if (numbers.Where(x => x == 0).Count() == numbers.Length) return "0";
else return string.Join("", numbers);
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# 빈칸 채우기(예시) (0) | 2023.01.28 |
---|---|
프로그래머스 C# 나머지 한 점 좌표 출력(직사각형, XOR) (0) | 2023.01.28 |
C# 디스크 컨트롤러(다른 사람의 풀이) (0) | 2023.01.27 |
C# 단어 변환(DFS, 깊이 우선 탐색) (0) | 2023.01.27 |
프로그래머스 레벨1 C# 체육복(list Remove) (0) | 2023.01.27 |
글
C# 디스크 컨트롤러(다른 사람의 풀이)
using System.Collections.Generic;
using System.Linq;
public class Solution {
public class Job {
public int requestedAt = -1;
public int duration = -1;
public int waited = -1;
}
public int solution(int[,] input) {
var JOB_CNT = input.GetLength(0);
var jobs = new List<Job>(JOB_CNT);
for (int i = 0; i < JOB_CNT; i++) {
jobs.Add(new Job() {
requestedAt = input[i, 0],
duration = input[i, 1],
});
}
int time = 0, done = 0;
while (done < JOB_CNT) {
var job = jobs // 전체 작업 중에서
.Where(j => j.waited < 0) // 아직 waited 계산이 끝나지 않았고,
.Where(j => j.requestedAt <= time) // 현재 시간(time) 기준 요청이 들어와있으며
.OrderBy(j => j.duration) // 그 중에서 작업에 필요한 시간이
.FirstOrDefault(); // 가장 짧은 작업을 선정
if (null == job) {
time++; continue; // 없으면 시간 경과만 하고 넘어감
}
time += job.duration;
job.waited = time - job.requestedAt;
done++;
}
return (int)jobs.Average(j => j.waited);
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# 나머지 한 점 좌표 출력(직사각형, XOR) (0) | 2023.01.28 |
---|---|
C# 가장 큰 수(foreach, CompareTo, var, string.Join) (0) | 2023.01.27 |
C# 단어 변환(DFS, 깊이 우선 탐색) (0) | 2023.01.27 |
프로그래머스 레벨1 C# 체육복(list Remove) (0) | 2023.01.27 |
프로그래머스 C# K번째 수(list.Clear(), list.Count) (0) | 2023.01.27 |
글
C# 단어 변환(DFS, 깊이 우선 탐색)
using System;
public class Solution {
string tar;
int answer = 0;
//dfs
//비교 항목, 단계, 방문 여부, 비교 대상 배열
public void dfs(string begin, int phase, bool[] visit, string[] words)
{
//비교 대상 길이만큼 반복
for(int i=0; i<words.Length; i++)
{
//해당 visit 변수가 거짓이면
if(!visit[i])
{
//비교 항목과 [i]번째 비교 대상 단어와 비교
int n = 0;
for(int j=0; j<words[i].Length; j++)
{
//한 글자씩 비교하여 같으면 n변수 더하기
if(begin[j] == words[i][j])
{
n++;
}
}
//변수 n이 비교 항목 문자열 길이 - 1 과 같을 때
if(n == begin.Length-1)
{
//비교 항목을 새로운 비교 대상 단어로 치환
begin = words[i];
//해당 번째 방문 true
visit[i] = true;
//치환된 비교 항목이 목표 타겟과 같으면 dfs 종료
if(begin == tar)
{
answer = phase + 1;
}
//아니면 dfs 실행
else
{
dfs(begin, phase + 1, visit, words);
}
}
}
}
}
public int solution(string begin, string target, string[] words) {
//목표 타겟 변수 저장
tar = target;
//방문 변수 선언
bool[] visit = new bool[words.Length];
//dfs 실행
dfs(begin, 0, visit, words);
return answer;
}
}
// 몰라서 베꼈다.
'프로그래밍' 카테고리의 다른 글
C# 가장 큰 수(foreach, CompareTo, var, string.Join) (0) | 2023.01.27 |
---|---|
C# 디스크 컨트롤러(다른 사람의 풀이) (0) | 2023.01.27 |
프로그래머스 레벨1 C# 체육복(list Remove) (0) | 2023.01.27 |
프로그래머스 C# K번째 수(list.Clear(), list.Count) (0) | 2023.01.27 |
프로그래머스 C# 큰 수 만들기(Stringbuilder) (0) | 2023.01.27 |
글
프로그래머스 레벨1 C# 체육복(list Remove)
C#
using System;
public class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
int[] student = new int[n];
int a = 0;
for(int i=0;i<n;i++)
{
student[i] = i+1;
}
//학생 번호를 정의한다.
for(int i=0;i<n;i++)
{
for(int j=0;j<reserve.Length;j++)
{
if(student[i] == reserve[j])
{
student[i] = 0;
}
}
//reserve에 기록된 학생들은 0으로 바꿔서 0의 개수를 리턴하게
if(i>=1 && student[i-1] != 0)
{
student[i-1] = 0;
}
if(i+1 < n && student[i+1] != 0 && i>=1 && student[i-1] != 0 && student[i] == 0)
{
student[i+1] = 0;
}
}
for(int i=0;i<n;i++)
{
if(student[i] == 0)
{
answer++;
}
}
return answer;
}
}
// 이렇게 했는데 안돼서 걍 다른 사람 거를 봤다.
using System;
using System.Collections;
using System.Collections.Generic;
public class Solution {
public int solution(int n, int[] lost, int[] reserve) {
List<int> lostList = new List<int>(lost);
List<int> reserveList = new List<int>(reserve);
//소팅 안되어 있음
lostList.Sort();
reserveList.Sort();
List<int> tempList = new List<int>(reserveList);
// 소팅 되어 있음
for (int i = 0; i < tempList.Count; i++)
{
if (lostList.Contains(tempList[i]))
{
lostList.Remove(tempList[i]);
reserveList.Remove(tempList[i]);
}
}
for (int i = 0; i < reserveList.Count; i++)
{
if (lostList.Contains(reserveList[i] - 1))
{
lostList.Remove(reserveList[i] - 1);
continue;
}
if (lostList.Contains(reserveList[i] + 1))
{
lostList.Remove(reserveList[i] + 1);
continue;
}
}
return n - lostList.Count;
}
}
////
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
public int solution(int n, int[] lost, int[] reserve)
{
int answer = 0;
Queue<int> que = new Queue<int>();
for (int i = 1; i <= n; i++)
{
if (lost.Contains(i))
{
if (reserve.Contains(i))
{
answer++;
que.Enqueue(i);
}
else if (reserve.Contains(i - 1) && lost.Contains(i - 1) == false && que.Contains(i - 1) == false)
{
answer++;
que.Enqueue(i - 1);
}
else if (reserve.Contains(i + 1) && lost.Contains(i + 1) == false && que.Contains(i + 1) == false)
{
answer++;
que.Enqueue(i + 1);
}
}
else answer++;
}
return answer;
}
}
'프로그래밍' 카테고리의 다른 글
C# 디스크 컨트롤러(다른 사람의 풀이) (0) | 2023.01.27 |
---|---|
C# 단어 변환(DFS, 깊이 우선 탐색) (0) | 2023.01.27 |
프로그래머스 C# K번째 수(list.Clear(), list.Count) (0) | 2023.01.27 |
프로그래머스 C# 큰 수 만들기(Stringbuilder) (0) | 2023.01.27 |
C# 소수 만들기(3중 for문) (0) | 2023.01.26 |
글
프로그래머스 C# K번째 수(list.Clear(), list.Count)
using System;
using System.Collections.Generic;
public class Solution {
public int[] solution(int[] array, int[,] commands) {
int[] answer = new int[commands.GetLength(0)];
List<int> list = new List<int>();
int k = 0;
for(int i=0;i<commands.GetLength(0);i++)
{
for(int j=commands[i,0]-1;j<commands[i,1];j++)
{
list.Add(array[j]);
// 자르기
}
list.Sort(); // 소팅하기
answer[i] = int.Parse(list[commands[i,2]-1+k].ToString());
// i에서 부터 k번째 수를 집어넣는다.
for(int p = 0;p<list.Count;p++)
{
list[p] = 0;
}
// 소팅한 게 반영이 안되게 하려면 / for문을 돌리기 위해서는 리스트를 다 0으로 초기화해야함. 이러면 마이너스가 있을 때 문제 생길 듯. Abs로하고 소팅하면 되려나
k += commands[i,1]-commands[i,0]+1;
}
return answer;
}
}
///
using System;
using System.Collections.Generic;
public class Solution {
public int[] solution(int[] array, int[,] commands) {
int a2 = commands.Length / 3;
int[] answer = new int[a2];
List<int> list = new List<int>();
for (int b = 0; b < a2; b++)
{
list.Clear();
int i = commands[b, 0];
int j = commands[b, 1];
int k = commands[b, 2];
for (int a = i - 1; a < j; a++)
{
list.Add(array[a]);
}
list.Sort();
answer[b] = list[k-1];
}
return answer;
}
}
'프로그래밍' 카테고리의 다른 글
C# 단어 변환(DFS, 깊이 우선 탐색) (0) | 2023.01.27 |
---|---|
프로그래머스 레벨1 C# 체육복(list Remove) (0) | 2023.01.27 |
프로그래머스 C# 큰 수 만들기(Stringbuilder) (0) | 2023.01.27 |
C# 소수 만들기(3중 for문) (0) | 2023.01.26 |
코테 공부 순서 (0) | 2023.01.26 |
글
프로그래머스 C# 큰 수 만들기(Stringbuilder)
C#
using System;
using System.Text;
public class Solution {
public string solution(string number, int k) {
string answer = "";
number = "9" + number;
StringBuilder sb = new StringBuilder(number);
int index = 0;
for(int i = 0; i < k; i++)
{
while (true)
{
if(index + 1 == sb.Length)
{
sb.Remove(index, 1);
index--;
break;
}
if(sb[index] < sb[index + 1])
{
sb.Remove(index, 1);
index--;
break;
}
index++;
}
}
return answer = sb.Remove(0,1).ToString();
}
}
// 모르겠어서 다른 분의 코드를 참고했다. stringbuilder를 몰랐었다.
// stringbuilder는 string이긴 한데 string의 내용을 바꿀 수 있는 거. using System.Text;가 필요하다.
// stringbuilder의 Remove는 지정된 위치에서 지정된 길이 만큼을 지워주는 것.
https://developer-talk.tistory.com/342
using System;
using System.Text;
public class Solution {
public string solution(string number, int k) {
string answer = "";
StringBuilder sb = new StringBuilder();
int n=number.Length-k;
//자리수 만큼 반복
for(int i=0, idx=-1; i<n; i++)
{
char max = '0';
// idx 다음 인덱스부터 k+i와 작거나 같을 때 까지 반복한다.
for(int j=idx+1; j<=k+i; j++)
{
//비교해서 max값 넣어주기
if(max<number[j])
{
max = number[j];
idx = j;
}
}
sb.Append(max); //StringBuilder에 추가한다.
}
answer = sb.ToString();
return answer;
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 레벨1 C# 체육복(list Remove) (0) | 2023.01.27 |
---|---|
프로그래머스 C# K번째 수(list.Clear(), list.Count) (0) | 2023.01.27 |
C# 소수 만들기(3중 for문) (0) | 2023.01.26 |
코테 공부 순서 (0) | 2023.01.26 |
프로그래머스 C# 3진법 뒤집기(int.Parse, 3진수 표기하기) (0) | 2023.01.26 |
글
C# 소수 만들기(3중 for문)
using System;
class Solution
{
public int solution(int[] nums)
{
int answer = 0;
for(int i = 0; i < nums.Length - 2; ++i)
{
for(int j = i + 1; j < nums.Length - 1; ++j)
{
for(int k = j + 1; k < nums.Length; ++k)
{
int sum = nums[i] + nums[j] + nums[k];
if (isPrime(sum))
{
answer++;
}
}
}
}
return answer;
}
public bool isPrime(int num)
{
for(int i=2; i*i<=num; i++)
{
if(num%i == 0) return false;
}
return true;
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 C# K번째 수(list.Clear(), list.Count) (0) | 2023.01.27 |
---|---|
프로그래머스 C# 큰 수 만들기(Stringbuilder) (0) | 2023.01.27 |
코테 공부 순서 (0) | 2023.01.26 |
프로그래머스 C# 3진법 뒤집기(int.Parse, 3진수 표기하기) (0) | 2023.01.26 |
C# 타겟 넘버(DFS) (0) | 2023.01.26 |