paizaのCランク獲得問題の解答がなかったので、備忘録として残します。
明らかに簡単な問題の場合は省略しますが、個人的に少しでも考えたコードを残していきたいと思います。
初心者ですので醜いコードを書きますが、温かい目で見守っていただけると嬉しいです。
また、より良い記述方法などありましたら、コメント等で教えていただけると嬉しいです。
目次
- 指定の要素のカウント
- 全ての要素の和
- 指定要素があるかの判定
- 指定要素の先頭位置
- 要素の種類数
- 【配列を参照する操作】全ての要素に対する操作
- 配列の順序の反転
- 指定要素の入れ替え
- 末尾への要素の追加
- 指定位置への要素の追加
指定の要素のカウント
using System;
class Program
{
public static void Main()
{
string []NK=Console.ReadLine().Split();
int N=int.Parse(NK[0]);
int K=int.Parse(NK[1]);
int []A=new int [N];
int count=0;
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
if(A[i]==K){
count++;
}
}
Console.WriteLine(count);
}
}
全ての要素の和
using System;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
int sum=0;
for(int i=0;i<N;i++){
sum+=A[i];
}
Console.WriteLine(sum);
}
}
Linq のA.Sum()を用いても出来ます。
次の最大値もA.Max()で出来ます。
その次の最小値もA.Min()で出来ます。
指定要素があるかの判定
using System;
class Program
{
public static void Main()
{
string [] NK=Console.ReadLine().Split();
int N=int.Parse(NK[0]);
int K=int.Parse(NK[1]);
int [] A= new int [N];
int count=0;
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
if(A[i]==K){
count++;
}
}
if(count!=0){
Console.WriteLine("Yes");
}else{
Console.WriteLine("No");
}
}
}
指定要素の先頭位置
using System;
class Program
{
public static void Main()
{
string [] NK=Console.ReadLine().Split();
int N=int.Parse(NK[0]);
int K=int.Parse(NK[1]);
int [] A= new int [N];
int count=0;
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
int Index = -1;
for (int i = 0; i < N; i++)
{
if (A[i] == K)
{
Index = i+1;
break;
}
}
Console.WriteLine(Index);
}
}
要素の種類数
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
HashSet<int> value = new HashSet<int>();
for (int i = 0; i < N; i++)
{
value.Add(A[i]);
}
int reuslt =value.Count;
Console.WriteLine(reuslt);
}
}
【配列を参照する操作】全ての要素に対する操作
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
string [] NK=Console.ReadLine().Split();
int N=int.Parse(NK[0]);
int K=int.Parse(NK[1]);
int [] A= new int [N];
for(int i=0;i<N;i++){
int a=int.Parse(Console.ReadLine());
A[i]=a+K;
Console.WriteLine(A[i]);
}
}
}
配列の順序の反転
using System;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
Array.Reverse(A);
foreach (int num in A)
{
Console.WriteLine(num);
}
}
}
指定要素の入れ替え
using System;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
string [] XY=Console.ReadLine().Split();
int X=int.Parse(XY[0]);
int Y=int.Parse(XY[1]);
int tmp;
tmp=A[X-1];
A[X-1]=A[Y-1];
A[Y-1]=tmp;
foreach(var result in A){
Console.WriteLine(result);
}
}
}
以前どこかでやった気がします。
末尾への要素の追加
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
List<int> listA=A.ToList();
int B =int.Parse(Console.ReadLine());
listA.Add(B);
foreach(var list in listA){
Console.WriteLine(list);
}
}
}
指定位置への要素の追加
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
int N =int.Parse(Console.ReadLine());
int [] A= new int [N];
for(int i=0;i<N;i++){
A[i]=int.Parse(Console.ReadLine());
}
List<int> listA=new List<int>(A);
string[] nB =Console.ReadLine().Split();
int n=int.Parse(nB[0]);
int B=int.Parse(nB[1]);
listA.Insert(n,B);
foreach(var list in listA){
Console.WriteLine(list);
}
}
}